在我的玩具问题中,我有一个由整数组成的向量a
,我希望有效地从a
项中删除同样位于向量b
中的项。我写了代码
newa=NULL
for (j in 1:length(a))
if (min(abs(a[i]-b))>0) newa=c(newa,a[i])
但这太糟糕了......
答案 0 :(得分: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.
答案 1 :(得分:2)
像数学咖啡一样使手指变亮,这使我无法回答问题:P
我使用%in%做了很多。我从斯蒂芬特纳那里抓了一大堆代码,让它变得更加容易!
## Returns a logical vector TRUE for elements of X not in Y
"%nin%" <- function(x, y) !(x %in% y)