检查变量是否具有值''

rda*_*tor 16 string r

在脚本中我试图运行有时是变量被填充''(意思是:完全空),例如

variable <- ''
Run Code Online (Sandbox Code Playgroud)

有谁知道检查变量是否有值的方法''

is.null(variable)似乎不起作用.''是不一样的NULL.

Kon*_*lph 22

''是一个空角色.它意味着"完全空" -这确实是NULL.

要测试它,只需检查是否相等:

if (variable == '') …
Run Code Online (Sandbox Code Playgroud)

如果要检查变量是否存在,则需要使用...  exists:

if (exists('variable')) …
Run Code Online (Sandbox Code Playgroud)

但实际上exists在普通代码中很少有用例,因为作为代码的作者,你应该知道哪些变量存在而哪些不存在.相反,它主要用于库函数.

但是,你得到的错误,

缺少需要TRUE/FALSE的值

意味着变量不存在.相反,if不能处理缺失值 - 即NA.的NA尽可能多的计算其本身含有的结果发生NA的值.例如,与NA任何值(甚至NA自身)相比,再次产生NA:

variable = NA
variable == NA
# [1] NA
Run Code Online (Sandbox Code Playgroud)

由于if预期TRUEFALSE,它无法处理NA.如果您的值可能存在NA,则需要明确检查:

if (is.na(variable) || variable == '') …
Run Code Online (Sandbox Code Playgroud)

但是,通常最好NA从一开始就从数据中排除值,这样它们就不会传播到上述情况中.

  • 一个旧线程,但我看到这里给出的特定错误的响应是不正确的."需要TRUE/FALSE的缺失值"错误并不意味着变量不存在,而是设置为NA(缺失值代码).如果它不存在,则错误将是"找不到"对象'变量'.R抱怨因为逻辑未定义; NA既不等于也不等于任何东西,因为它表示该值缺失,因此可能也是如此.使用`is.na()`和布尔运算符`&&`或`||`来定义找到遗漏时它应该做什么. (2认同)