📜  如何修复:R 中需要 true/false 的缺失值

📅  最后修改于: 2022-05-13 01:54:56.001000             🧑  作者: Mango

如何修复: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])
}


输出:

如何修复错误

我们需要使用 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]);
}

输出:

您必须使用函数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