假设我有一个向量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)
但感觉我在这里重新发明轮子。有更好的选择吗?
答案 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)]