私のおもちゃの問題では、整数で作られたベクトルがあり、ベクトルにもある項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.
Mathematical.coffee のように指を軽くしているので、質問に答えることはできません :P
私は %in% を使ってこれをよく行います。そして、Stephen Turner から、それをさらに簡単にする素晴らしいコードを入手しました。
## Returns a logical vector TRUE for elements of X not in Y
"%nin%" <- function(x, y) !(x %in% y)