为何data[data==""]会同时返回NA与空字符串?
为什么
data[data==""]会同时返回NA和空字符串? 这是R的逻辑运算和子集规则导致的:
- 当向量里存在NA值时,
data==""这个比较操作对NA的位置无法得出TRUE/FALSE,会直接返回NA。 - 用包含NA的逻辑向量做子集索引时,R不会自动过滤NA对应的位置,而是把这些位置的结果保留为NA;只有逻辑值为TRUE的位置,才会提取原向量里的空字符串。
举个极简的验证示例:
test_vec <- c(NA, "", NA, "") test_vec[test_vec == ""] # 输出:[1] NA "" NA ""
如果只想提取空字符串,有两种常用写法:
- 先排除NA再筛选:
data[!is.na(data) & data == ""] - 用
nzchar()判断(该函数对NA返回FALSE,对空字符串也返回FALSE):data[!nzchar(data)]
内容的提问来源于stack exchange,提问作者Korkut
相关产品推荐
相关产品推荐

