在脚本中,有时会使用''
(表示:完全为空)来填充变量。
variable <- ''
有人知道一种检查变量是否具有值''
的方法吗?
is.null(variable)
似乎不起作用。 ''
与NULL
不同。
''
是一个空字符。它并不意味着“完全为空”——那才是NULL
。
要测试它,只需检查相等性:
if (variable == '') …
然而,您收到的错误信息
需要 TRUE/FALSE 值的位置缺少值
意味着您的变量中存在缺失值,即 NA
。 if
无法处理缺失值。由于许多计算本身包含一个 NA
值,因此会出现 NA
。例如,将 NA
与任何值(甚至是 NA
本身)进行比较仍然会产生 NA
:
variable = NA
variable == NA
# [1] NA
由于if
需要TRUE
或FALSE
,所以无法处理NA
。如果您的值可能是NA
,则需要明确检查:
if (is.na(variable) || variable == '') …
然而,通常最好从一开始就排除数据中的NA
值,以免它们传播到像上面那样的情况。
stringi
包中有一个处理此问题的函数。require(stringi)
stri_isempty(c("A",""))
NA
,通常情况下,只需使用dplyr::na_if()
:variable <- ''
dplyr::na_if(variable, "")
#> [1] NA
is.na()
和布尔运算符&&
或||
来定义在发现缺失时应该执行什么操作。 - Aaron left Stack Overflowvariable
是一个列表,这个测试将会给出以下警告:the condition has length > 1 and only the first element will be used
。如果想要测试整个列表是否为空字符串,并避免警告,则可以尝试使用all(variable = '')
进行测试。 - PatrickTcharacter
。列表的行为基本上不同。请注意,您的比较缺少一个=
:它应该是==
,而不是=
。 - Konrad Rudolph