9

这真的很简单,但我似乎无法找到它。我知道 R 有一个否定版本,%in%它返回“不在”。显然我可以只使用!(x %in% y),但是该语言包含一个已经否定的构造,我想使用它,goshdarnit。

那么有什么功能呢?搜索以及%nin%所有%notin%失败。

如果您对答案进行基准测试而不是!(x %in% y)使用以下示例数据,则可以为您提供互联网奖励:

x <- sample( sample(letters,5), 10^3, replace=TRUE)
y <- sample( letters, 10^5, replace=TRUE)
4

1 回答 1

15

只是出于兴趣。定义

"%w/o%" <- function(x, y) x[!x %in% y] 
'%ni%' <- Negate('%in%')

> benchmark(y[y%ni%x], y%w/o%x,replications=1000)
         test replications elapsed relative user.self sys.self user.child
2   y %w/o% x         1000    5.32 1.000000      4.60     0.70         NA
1 y[y %ni% x]         1000    5.34 1.003759      4.68     0.65         NA
  sys.child
2        NA
1        NA

我有饼干吗?

于 2012-07-03T01:15:47.957 回答