在我的一个玩具问题中,我有一个a
由整数组成的向量,我想有效地从a
向量中的项中删除b
。我写了代码
newa=NULL
for (j in 1:length(a))
if (min(abs(a[i]-b))>0) newa=c(newa,a[i])
但这太可怕了……
在我的一个玩具问题中,我有一个a
由整数组成的向量,我想有效地从a
向量中的项中删除b
。我写了代码
newa=NULL
for (j in 1:length(a))
if (min(abs(a[i]-b))>0) newa=c(newa,a[i])
但这太可怕了……
您可以只使用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.
像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)