R에 객체 (변수)가 정의되어 있는지 확인하는 방법은 무엇입니까?
오류가 발생하지 않고 R에 일부 변수가 정의되어 있는지 확인하고 싶습니다. 어떻게해야합니까?
내 시도 (성공하지 않음) :
> is.na(ooxx)
Error: object 'ooxx' not found
> is.finite(ooxx)
Error: object 'ooxx' not found
감사!
당신이 원하는 exists()
:
R> exists("somethingUnknown")
[1] FALSE
R> somethingUnknown <- 42
R> exists("somethingUnknown")
[1] TRUE
R>
?exists
"... 정의 됨"에 대한 정의는을 참조하십시오 . 예 :
> exists("foo")
[1] FALSE
> foo <- 1:10
> exists("foo")
[1] TRUE
함수 안에 있다면 missing ()이 원하는 것입니다.
exchequer = function(x) {
if(missing(x)){
message("x is missing… :-(")
}
}
exchequer()
x is missing… :-(
다른 사람들이 지적했듯이 찾고 있습니다 exists
. exists
R의 기본 패키지에서 사용 하는 이름을 사용하면 변수를 정의했는지 여부에 관계없이 true를 반환합니다.
> exists("data")
[1] TRUE
이 문제를 해결하려면 (Bazz가 지적한 바와 같이 ?exists
) inherits
인수를 사용하십시오 .
> exists("data", inherits = FALSE)
[1] FALSE
foo <- TRUE
> exists("foo", inherits = FALSE)
[1] TRUE
물론 첨부 된 패키지의 네임 스페이스를 검색하려는 경우에는 부족합니다.
> exists("data.table")
[1] FALSE
require(data.table)
> exists("data.table", inherits = FALSE)
[1] FALSE
> exists("data.table")
[1] TRUE
이 문제를 해결할 수있는 유일한 방법 은 기본 패키지가 아닌 첨부 된 패키지를 검색하는 것입니다 .
any(sapply(1:(which(search() == "tools:rstudio") - 1L),
function(pp) exists(_object_name_, where = pp, inherits = FALSE)))
교체 비교 _object_name_
와 "data.table"
( TRUE
) 대를 "var"
( FALSE
)
(물론 RStudio를 사용하지 않는 경우 자동으로 연결된 첫 번째 환경은입니다 "package:stats"
)
따옴표를 사용하지 않으려면? substitute의 예제 섹션에서 찾은 deparse (substitute ()) 트릭을 사용할 수 있습니다.
is.defined <- function(sym) {
sym <- deparse(substitute(sym))
env <- parent.frame()
exists(sym, env)
}
is.defined(a)
# FALSE
a <- 10
is.defined(a)
# TRUE
큐잉 시스템에 의해 결과 배열이 작성된 경우와 같이 찾고자하는 변수의 이름을 정확하게 모르는 상황이있을 수 있습니다. 이것들은 정규 표현을 요구하는 "ls"와 그 인수 "pattern"으로 해결 될 수 있습니다.
"존재"기능은 다음과 같이 다시 구현할 수 있습니다.
exists <-function(variablename) {
#print(ls(env=globalenv()))
return(1==length(ls(pattern=paste("^",variablename,"$",sep=""),env=globalenv())))
}
이 답변을 준비하는 동안 함수 내에서 ls () 를 호출 할 때 환경 사양이 필요하다는 것에 약간 놀랐습니다 . 그래서, 고마워요, stackoverflow! "all.names"속성도 true로 설정해야하지만 생략해야합니다.
참고 URL : https://stackoverflow.com/questions/9368900/how-to-check-if-object-variable-is-defined-in-r
'development' 카테고리의 다른 글
현재 체크 아웃 된 Git 브랜치를 프로그래밍 방식으로 결정하는 방법 (0) | 2020.04.01 |
---|---|
폰트 멋진 아이콘을 CSS 컨텐츠로 사용 (0) | 2020.04.01 |
https 만 사용하여 Bower를 설치 하시겠습니까? (0) | 2020.04.01 |
마이그레이션을 통해 기본값을 열에 추가 (0) | 2020.04.01 |
옵션 변경 방법 (0) | 2020.04.01 |