R - "需要TRUE/FALSE的缺失值"

use*_*590 8 syntax if-statement r

我正在尝试在R中执行以下代码

comments = c("no","yes",NA)
for (l in 1:length(comments)) {
    if (comments[l] != NA) print(comments[l]);
}
Run Code Online (Sandbox Code Playgroud)

但是我收到了一个错误

Error in if (comments[l] != NA) print(comments[l]) : missing value where TRUE/FALSE needed
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?

Cat*_*ath 18

检查命令:: NA!=NA你会得到结果NA,因此出现错误信息.

您必须使用函数is.na使您的if语句工作(通常,使用此函数检查NA值总是更好):

comments = c("no","yes",NA)
for (l in 1:length(comments)) {
    if (!is.na(comments[l])) print(comments[l])
}
[1] "no"
[1] "yes"
Run Code Online (Sandbox Code Playgroud)


Nik*_*kos 5

你能不能把 if 条件改成这样:

if (!is.na(comments[l])) print(comments[l]);
Run Code Online (Sandbox Code Playgroud)

您只能使用 is.na() 检查 NA 值。

  • @user3582590:请考虑接受实际回答您问题的答案,方法是单击答案投票计数下方的小复选标记。这为未来的读者找到了最有帮助的答案。 (2认同)