检查对象在r中是否为null或空字符串的最佳方法

检查对象在r中是否为null或空字符串的最佳方法,r,R,我想检查变量是'还是'NULL'。我做到了以下几点: x =NULL #or '' if(is.null(x) || x=='') { print('nothing') } else { print(x) } 我的问题是,检查这种情况的最佳方法是什么?我觉得有更好的方法可以做到这一点…与其检查它是否为NULL或空字符串,不如检查它的长度是否为非零,是否为非空字符串。然后,if的第一个分支将处理主要情况,else分支将处理不太常见的情况,这似乎比其他方法更容易遵循 if (le

我想检查变量是
'
还是'NULL'。我做到了以下几点:

x =NULL #or ''

if(is.null(x) || x=='') {
    print('nothing')
} else {
    print(x)
}

我的问题是,检查这种情况的最佳方法是什么?我觉得有更好的方法可以做到这一点…

与其检查它是否为NULL或空字符串,不如检查它的长度是否为非零,是否为非空字符串。然后,
if
的第一个分支将处理主要情况,
else
分支将处理不太常见的情况,这似乎比其他方法更容易遵循

if (length(x) && nzchar(x)) x else NA

一个缺点是
nzhar(NA)&&length(NA)
的计算结果为
TRUE
。我知道这不是想要的OP。但那是一个不同的条件,不是问题中要求的条件。使用
any(nzhar(x))
可能更安全;在某些情况下,当你给它一个要测试的逻辑向量时,R会抱怨。这取决于需要什么。如果需要一个标量,并且给出了一个向量,那么最好提出一个错误。