R:如何从另一个向量中的向量项中删除?

时间:2012-07-16 01:54:00

标签: r vector comparison

在我的玩具问题中,我有一个由整数组成的向量a,我希望有效地从a项中删除同样位于向量b中的项。我写了代码

newa=NULL
for (j in 1:length(a))
   if (min(abs(a[i]-b))>0) newa=c(newa,a[i])

但这太糟糕了......

2 个答案:

答案 0 :(得分:3)

您可以使用intersectsetdiff等(请参阅?setdiff):

a <- 1:10
b <- c(2, 3, 5, 7)

setdiff(a, b)
# [1]  1  4  6  8  9 10

甚至只使用%in%

a[!(a %in% b)] # (a %in% b) is TRUE in index i if a[i] is in b.

答案 1 :(得分:2)

像数学咖啡一样使手指变亮,这使我无法回答问题:P

我使用%in%做了很多。我从斯蒂芬特纳那里抓了一大堆代码,让它变得更加容易!

## Returns a logical vector TRUE for elements of X not in Y
"%nin%" <- function(x, y) !(x %in% y)