我收到了以下错误消息:
Error in if (condition) { : missing value where TRUE/FALSE needed
或
Error in while (condition) { : missing value where TRUE/FALSE needed
这是什么意思,我该如何预防?
答案 0 :(得分:177)
对condition
的评估产生了NA
。 if
条件必须包含TRUE
或FALSE
结果。
if (NA) {}
## Error in if (NA) { : missing value where TRUE/FALSE needed
这可能会因计算结果而意外发生:
if(TRUE && sqrt(-1)) {}
## Error in if (TRUE && sqrt(-1)) { : missing value where TRUE/FALSE needed
要测试对象是否缺失,请使用is.na(x)
而不是x == NA
。
另见相关错误:
Error in if/while (condition) { : argument is of length zero
Error in if/while (condition) : argument is not interpretable as logical
if (NULL) {}
## Error in if (NULL) { : argument is of length zero
if ("not logical") {}
## Error: argument is not interpretable as logical
if (c(TRUE, FALSE)) {}
## Warning message:
## the condition has length > 1 and only the first element will be used
答案 1 :(得分:7)
我在检查空字符串或空字符串
时遇到了这个问题if (x == NULL || x == '') {
将其更改为
if (is.null(x) || x == '') {
答案 2 :(得分:0)
这不适用于"NA"
的{{1}}
NA