我以爲我想出了這一個。我有一個變量叫: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