gpt4 book ai didi

r - 如何找到至少2个向量中常见的元素?

转载 作者:行者123 更新时间:2023-12-04 11:37:05 24 4
gpt4 key购买 nike

假设我有 5 个向量:

a <- c(1,2,3)
b <- c(2,3,4)
c <- c(1,2,5,8)
d <- c(2,3,4,6)
e <- c(2,7,8,9)

我知道我可以使用 Reduce() 来计算它们之间的交集。连同 intersect() , 像这样:
Reduce(intersect, list(a, b, c, d, e))
[1] 2

但是我怎样才能找到在至少 2 个向量中常见的元素? IE。:
[1] 1 2 3 4 8

最佳答案

它比很多人看起来要简单得多。这应该是非常有效的。

  • 将所有内容放入向量中:
    x <- unlist(list(a, b, c, d, e))
  • 查找重复项
    unique(x[duplicated(x)])
    # [1] 2 3 1 4 8

  • sort如果需要的话。

    注意:如果列表元素中可能存在重复项(您的示例似乎没有暗示),请替换 xx <- unlist(lapply(list(a, b, c, d, e), unique))
    编辑:由于 OP 表示对 n >= 2 的更通用解决方案感兴趣,我会这样做:
    which(tabulate(x) >= n)

    如果数据仅由示例中的自然整数(1、2 等)组成。如果不:
    f <- table(x)
    names(f)[f >= n]

    这现在离 James 解决方案不远了,但它避免了昂贵的 sort .它比计算所有可能的组合要快几英里。

    关于r - 如何找到至少2个向量中常见的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26175561/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com