我有一个名为data的向量,它有大约35000个元素(数字)。我有一个数字向量A.我想删除矢量数据中A的每个元素的外观。例如,如果A是向量[1,2]。我想在矢量数据中删除1和2的所有外观。我怎样才能做到这一点?是否有内置功能可以做到这一点?我想不出办法。使用循环执行它需要很长时间我假设。谢谢!
答案 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中1
或2
的位置。所以,你可以用它来索引你想要保留的东西(通过否定它):
datvec = datvec[!(datvec %in% elements_2_remove)]
你完成了!