从R中的向量中删除某些元素

时间:2017-03-24 17:58:04

标签: r

我有一个名为data的向量,它有大约35000个元素(数字)。我有一个数字向量A.我想删除矢量数据中A的每个元素的外观。例如,如果A是向量[1,2]。我想在矢量数据中删除1和2的所有外观。我怎样才能做到这一点?是否有内置功能可以做到这一点?我想不出办法。使用循环执行它需要很长时间我假设。谢谢!

1 个答案:

答案 0 :(得分:2)

有一个方便的%in% - 运算符。查阅,这是我能用任何编程语言想到的最好的东西之一!您可以使用它来检查一个向量A的所有元素与另一个向量B的所有元素,并返回一个逻辑向量,该向量给出A中可以在B中找到的所有元素的位置。这就是您所需要的!如果你是R的新手,可能看起来有点奇怪,但你会非常习惯它。

好的,那怎么用呢?让我们说datvec是你的数字向量:

datvec = c(1, 4, 1, 7, 5, 2, 8, 2, 10, -1, 0, 2)
elements_2_remove = c(1, 2)

datvec %in% elements_2_remove
## [1]  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE

因此,您会看到一个向量,它为您提供datvec中12的位置。所以,你可以用它来索引你想要保留的东西(通过否定它):

datvec = datvec[!(datvec %in% elements_2_remove)]

你完成了!