[英]R: how do I remove from a vector terms that are in another vector?
在我的玩具问题中,我有一个由整数组成的向量a
,并且我想有效地从也属于向量b
a
项中删除。 我写了代码
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.
它减轻了像math.coffee这样的手指,所以我再也无法回答问题了:P
我经常使用%in%进行此操作。 而且我从Stephen Turner摘录了很多代码,这使得编写代码变得更加容易!
## Returns a logical vector TRUE for elements of X not in Y
"%nin%" <- function(x, y) !(x %in% y)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.