我对 R 相当陌生,并且正在使用一个带有空条目的向量,并注意到 grep 对我的数据的行为违反直觉。我只是举一个例子,因为我不是 100% 确定如何解释它。假设我有三个向量:
A<-c("","","","","","","a")
B<-c(NA,NA,NA,NA,NA,NA,"a")
A
是最初存储数据的方式,B
也是 R 读取我的数据的方式。运行> vec[grep("",vec, invert=TRUE)]
- 据我了解 - 搜索vec
所有空单元格,返回它们的索引,然后填充并显示具有非空数据条目的结果向量。但是,当我运行它时vec=A
,vec=B
我得到:
vec = A:
> A[grep("",A, invert=FALSE)]
[1] "" "" "" "" "" "" "" "a"
> A[grep("",A, invert=TRUE)]
character(0)
vec = B:
> B[grep("",B, invert=FALSE)]
[1] "a"
> B[grep("",B, invert=TRUE)]
[1] NA NA NA NA NA NA
因为我认为我的数据被读取就像案例 BI 被反直觉的结果难住了。我意识到这可能只是一个变量类型的问题,但是我想知道是否有人可以对正在发生的事情有更多的了解。
快速编辑案例 A 是有道理的:因为 grep 找不到“”,因为变量类型已关闭,所以它返回所有内容。反转,它返回字符(0)作为“无”的默认值。仍然对案例 B 感到困惑。