if / while(condition)中的错误{:缺少需要TRUE / FALSE的值

时间:2011-09-08 22:17:57

标签: r r-faq

我收到了以下错误消息:

Error in if (condition) { : missing value where TRUE/FALSE needed

Error in while (condition) { : missing value where TRUE/FALSE needed

这是什么意思,我该如何预防?

3 个答案:

答案 0 :(得分:177)

condition的评估产生了NAif条件必须包含TRUEFALSE结果。

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