R语言如何修复:missing value where true/false needed in R
在这篇文章中,我们将看到如何在R编程语言中修复需要真/假的缺失值。
为什么会出现这种错误
当我们在 “if 语句 “或 “while 语句 “中把数值与NA(Not available)进行比较时,就会出现 “需要真/假的地方缺失数值 “的错误,因为你向 “if 语句 “或 “while 语句 “传递了一个无效的数值。
例1:使用变量进行修复
如何重现该错误
这里我们会得到错误,因为我们使用了num == NA的语法。我们不能将数值与NA数字进行比较,这种类型的语句(如果条件)总是返回TRUE或FALSE值。
num <- "2"
if (num == NA) {
print("Number is :", NA)
}else{
print(num)
}
输出
错误在if (num == NA) {: 缺少值,需要TRUE/FALSE
如何修复该错误
我们需要使用is.na(Value),因为它总是返回TRUE或FALSE。
num <- "2"
if (is.na(num)) {
print("Number is : NA")
}else{
print(num)
}
输出
[1] "2"
例2:使用向量进行修复
这里我们会得到一个错误,因为我们使用了 vec[l] != NA 的语法。我们不能将数值与NA数字进行比较,这种类型的语句(If condition)总是返回TRUE或FALSE值。
vec = c(1, 0, NA)
for (l in 1:length(vec)) {
if (vec[l] != NA) print(vec[l]);
}
输出
Error in if (num == NA) {: missing value where TRUE/FALSE needed
你必须使用函数is.na才能使你的if语句工作。
vec = c(1, 0, NA)
for (l in 1:length(vec)) {
if (!is.na(vec[l])) print(vec[l])
}
输出
[1] 1
[1] 0