0

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

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

但这太可怕了……

4

2 回答 2

3

您可以只使用intersect,setdiff等(请参阅?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.
于 2012-07-16T01:56:08.913 回答
2

像mathical.coffee这样可以减轻手指的负担,所以我永远无法回答问题:P

我经常使用 %in% 来做这件事。我从 Stephen Turner 那里获得了一些很棒的代码,这使它变得更加容易!

## Returns a logical vector TRUE for elements of X not in Y
"%nin%" <- function(x, y) !(x %in% y)
于 2012-07-16T02:03:51.343 回答