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
함수 안에 있는 경우 ()를 놓치는 것이 원하는 것입니다.
exchequer = function(x) {
if(missing(x)){
message("x is missing… :-(")
}
}
exchequer()
x is missing… :-(
다른 사람들이 지적했듯이, 당신은 당신이 찾고 있는 것은exists
다음을 사용합니다.exists
R의 기본 패키지에서 사용하는 이름을 사용하면 변수를 정의했는지 여부에 관계없이 true가 반환됩니다.
> exists("data")
[1] TRUE
이것을 피하기 위해 (배즈가 지적한 바와 같이; 참조).?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
) vs."var"
(FALSE
)
(물론 RStudio에 가입하지 않으셨다면 첫 번째 자동 연결 환경은"package:stats"
)
따옴표를 사용하지 않으려면 다음을 사용할 수 있습니다.deparse(substitute())
의 예제 섹션에서 발견한 속임수?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
따옴표를 사용해도 괜찮다면 다음을 사용할 수 있습니다.
존재함(("x")
따옴표를 사용하지 않으려면 다음을 사용할 수 있습니다.
존재함(deparase(분사(x))
대기열 시스템에서 결과 배열을 만든 경우와 같이 찾고 있는 변수의 이름을 정확히 모르는 경우가 있을 수 있습니다.정규식을 예상하는 "ls" 및 인수 "pattern"을 사용하여 이러한 문제를 해결할 수 있습니다.
"존재" 기능은 다음과 같은 방식으로 재구현될 수 있습니다.
exists <-function(variablename) {
#print(ls(env=globalenv()))
return(1==length(ls(pattern=paste("^",variablename,"$",sep=""),env=globalenv())))
}
이 답변을 준비하면서 함수 내에서 ls()를 호출할 때 환경의 사양이 필요하다는 점에 조금 놀랐습니다.감사합니다, 스택 오버플로!"all.names" 속성도 true로 설정했어야 하지만 생략했습니다.
언급URL : https://stackoverflow.com/questions/9368900/how-to-check-if-object-variable-is-defined-in-r
'programing' 카테고리의 다른 글
Python의 s= "안녕하세요, %s"에 해당하는 루비는 무엇입니까?%s은(는) 어디에 있습니까?" %("John", "Mary")" (0) | 2023.07.01 |
---|---|
BOM 폼을 가져올 때 Spring Boot에서 버전 번호를 재정의하는 방법은 무엇입니까? (0) | 2023.07.01 |
휴대용 MongoDB? (0) | 2023.07.01 |
레이저 보기에서 인코딩되지 않은 문자열 내보내기 (0) | 2023.07.01 |
몽구스에 있는 데이트? (0) | 2023.07.01 |