我不想使用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>

    好像关键的问题是你为什么要删除这两个元素吧,因为它们的值是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

    找到原因,长度的问题。

    2 年 后

    第一个是碰巧得到了正确的结果,代码应该改写为:
    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]]

    4 年 后

    %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>