向量之间的差异_including_ NA

时间:2011-12-01 10:36:24

标签: r vector na

假设我有一个向量x<-c(1,2,NA,4,5,NA)

我将一些神话代码应用于该向量,从而生成另一个向量y<-c(1,NA,3, 4,10,NA)

现在我希望找出哪个位置我的两个向量不同,其中我将两个NA视为相同,一个NA和非NA(例如两个示例向量的第二个元素)。

具体来说,对于我的例子,我想最终得到一个持有c(2,3,5)的向量。

对于我的用例,我不满足于逻辑变量的向量,但显然我可以轻松转换(which),所以我也会接受它。

我有一些解决方案,如:

simplediff<-x!=y
nadiff<-is.na(x)!=is.na(y)
which(simplediff | nadiff)

但感觉我在这里重新发明轮子。有更好的选择吗?

2 个答案:

答案 0 :(得分:6)

如何循环使用identical

 !mapply(identical,x,y)
[1] FALSE  TRUE  TRUE FALSE  TRUE FALSE

对于职位:

seq_along(x)[!mapply(identical,x,y)]
[1] 2 3 5

which(!mapply(identical,x,y))
[1] 2 3 5

答案 1 :(得分:0)

一种可能的解决方案(但确定它不是最好的):

(1:length(x))[-which((x-y)==0)]