如何修复:R 中需要 true/false 的缺失值
在本文中,我们将了解如何修复 R 编程语言中需要 true/false 的缺失值。
为什么会发生此错误?
当我们将值与 NA(不可用)进行比较时,将其放入“if 语句”或“while 语句”,然后出现“需要 true/false 的缺失值”错误是您将无效值传递给“if 语句” ”或“while 语句”。
示例 1:使用变量进行修复
如何重现错误
在这里我们会得到错误,因为我们使用了语法 num == NA。我们不能将值与 NA 数进行比较,这种类型的语句(如果条件)总是返回 TRUE 或 FALSE 值。
R
num <- "2"
if (num == NA) {
print("Number is :", NA)
}else{
print(num)
}
R
num <- "2"
if (is.na(num)) {
print("Number is : NA")
}else{
print(num)
}
R
vec = c(1, 0, NA)
for (l in 1:length(vec)) {
if (vec[l] != NA) print(vec[l]);
}
R
vec = c(1, 0, NA)
for (l in 1:length(vec)) {
if (!is.na(vec[l])) print(vec[l])
}
输出:
Error in if (num == NA) {: missing value where TRUE/FALSE needed
如何修复错误
我们需要使用 is.na(Value) 因为它总是返回 TRUE 或 FALSE。
R
num <- "2"
if (is.na(num)) {
print("Number is : NA")
}else{
print(num)
}
输出:
[1] "2"
示例 2:用向量固定
在这里我们会得到错误,因为我们使用了语法 vec[l] != NA。我们不能将值与 NA 数进行比较,这种类型的语句(如果条件)总是返回 TRUE 或 FALSE 值。
R
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 语句起作用。
R
vec = c(1, 0, NA)
for (l in 1:length(vec)) {
if (!is.na(vec[l])) print(vec[l])
}
输出:
[1] 1
[1] 0