繁体   English   中英

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

[英]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])

但这太可怕了...

您可以只使用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.

它减轻了像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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM