我以为我想出了这一个。我有一个变量叫:R - 检查一个变量是否存在
count_1
它只是一个元素的向量。当我经历我的循环时,有时它有价值,而在其他时候则不然。我想要做的就是询问它是否包含任何内容,如果不包含,只是回头看看。
遗漏值,其中TRUE/FALSE需要 执行暂停
这是迄今为止我尝试:
if (exists("count_1"))
{
#code#
}
我以为我想出了这一个。我有一个变量叫:R - 检查一个变量是否存在
count_1
它只是一个元素的向量。当我经历我的循环时,有时它有价值,而在其他时候则不然。我想要做的就是询问它是否包含任何内容,如果不包含,只是回头看看。
遗漏值,其中TRUE/FALSE需要 执行暂停
这是迄今为止我尝试:
if (exists("count_1"))
{
#code#
}
使用if(length(count_1) == 1) { next }
检查count_1
中是否有值。
dat <- 1:5
count_1 <- which(dat > 10)
count_1
# integer(0)
length(count_1) == 1
# [1] FALSE
它不会与填充的变量的另一种方式工作,比如:
count_1 <- ifelse(any(dat > 10), which(dat > 10), NA)
count_1
# [1] NA
length(count_1) == 1
# [1] TRUE
出于不同的原因
但是,如果你的代码做这样的事情,这只会工作,我需要检查一个变量是否存在于一个函数中。我用这个:
check=function(x) tryCatch(if(class(x) == 'logical') 1 else 1, error=function(e) 0)
varX=1
check(varX)
[1] 1
rm(varX)
check(varX)
[1] 0
f1= function(x) if(check(x)) cat('exists') else cat('not exists')
f1(varX)
not exists
错误信息意味着你的变量存在但包含一个缺失值,即一个“NA”值。也许你应该使用'if(!is.na(count_1))'或'if(is.finite(count_1))'。但是,如果您有很多循环,则您正在编写低效的R代码。 – Roland
也许这需要一个双重检查 - “if(exists(”count_1“)&!is.na(count_1))' –
@Roland'count_1 < - NA;如果(存在(“count_1”)){“是”}其他{“否”}工作......不知道如何重现上述错误。 – zx8754