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

mat*_*123 4 r

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

小智 12

有这个方便的%in%-operator。查一查,这是我能想到的任何编程语言中最好的事情之一!您可以使用它来检查一个向量 A 的所有元素与另一个向量 B 的所有元素,并返回一个逻辑向量,该向量给出了可以在 B 中找到的 A 中所有元素的位置。这正是您所需要的!如果您是 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
Run Code Online (Sandbox Code Playgroud)

因此,您会看到一个向量,它为您提供datvec 中的位置1或位置2。因此,您可以使用它来索引您想要保留的内容(通过否定它):

datvec = datvec[!(datvec %in% elements_2_remove)]
Run Code Online (Sandbox Code Playgroud)

你已经完成了!