我有两个向量要比较。我尝试过match((和%in%,但它没有给我想要的结果。解决方案应在R基础中。
输入
a = c(1,2,3,4,5)
b = c(1,1,2)
经过测试的解决方案
b %in% a
TRUE TRUE TRUE
然而,我希望它说TRUEFALSETRUE,因为";1〃;在a.中只出现一次
在R基地有什么办法做到这一点吗?
1(追加"1〃;对于每个条目的第一次出现;2〃;到第二个,依此类推。然后使用这些。
f <- function(x) paste(x, seq_along(x))
ave(b, b, FUN = f) %in% ave(a, a, FUN = f)
## [1] TRUE FALSE TRUE
2(示例中的a中没有重复,如果是这种情况,则另一种方法是检查b的每个元素是否在a中,但如果是重复,则拒绝它。
(b %in% a) & !duplicated(b)
## [1] TRUE FALSE TRUE
备注
a <- c(1, 2, 3, 4, 5); b <- c(1, 1, 2) # inputs