我不想使用index,也不想使用下面的方法,
<br />
> x1=c(1,2,3,4,5,6)<br />
> x1[which(x1!=c(5,6))]<br />
[1] 1 2 3 4<br />
这个方式感觉有点笨拙,请问,有无更加轻巧的方法,删除5,6这两个元素?
</p>
我不想使用index,也不想使用下面的方法,
<br />
> x1=c(1,2,3,4,5,6)<br />
> x1[which(x1!=c(5,6))]<br />
[1] 1 2 3 4<br />
好像关键的问题是你为什么要删除这两个元素吧,因为它们的值是5,6,还是因为它们排在了向量的最后位置,是吧
which多余,习惯用&。另外可以用setdiff或match等等。
> x1=c(1,3,4,29,68,4,6,9)
> x1
[1] 1 3 4 29 68 4 6 9
> x2=c(4,6)
我要得到1,3,29,68,9
为何这样不行
x1[which(x1 !=x2)]
[1] 1 3 29 68 4 6 9
找到原因,长度的问题。
第一个是碰巧得到了正确的结果,代码应该改写为:
x1=c(1,2,3,4,5,6)
x1[x1!=5&x1!=6]
相应的最后一个代码改写为下面即可:
x1=c(1,3,4,29,68,4,6,9)
x2=c(4,6)
x1[x1!=x2[1]&x1!=x[2]]
%in%
好像是值对应
x1 <- c(1, 3, 4, 29, 68, 4, 6, 9)
x2 <- c(4, 6)
x1[x1 %in% x2]
#> [1] 4 4 6
x1[!(x1 %in% x2)]
#> [1] 1 3 29 68 9
<sup>Created on 2019-04-21 by the reprex package (v0.2.1)</sup>