【问题标题】:R get all common elements for all possible combinations of N variablesR获取N个变量的所有可能组合的所有公共元素
【发布时间】:2017-03-08 08:59:58
【问题描述】:

我想得到 n 个变量的所有可能组合中的所有公共元素。

假设我们有 3 个变量:a、b 和 c,每个变量有 4、2 和 3 个元素。我想创建一个数据框,在一列(a、b、c、ab、ac、bc 和 abc)中包含所有可能的组合,在第二列中包含常见元素。示例:

输入:

a<-c("x1","x2","x3","x4")
b<-c("x2","x5")
c<-c("x3","x4","x6")

我想要一个看起来像这样的输出:

   name       elements
1    a       "x1","x2","x3","x4"
2    b       "x2","x3","x5"
3    c       "x3","x4","x6"
4   ab       "x1","x2","x3","x4","x5"
5   ac       "x1","x2","x3","x4","x6"
6   bc       "x2","x3","x4","x5","x6"
7   abc      "x1","x2","x3","x4","x5","x6" 

到目前为止,我尝试过这个:

all1<-c("a","b","c")
all2<-list(a,b,c)
all3<-c(a,b,c)

sapply (  1:3, function(x) combn(all1,x))
sapply (  1:3, function(x) combn(all2,x))
sapply (  1:3, function(x) combn(all3,x))

【问题讨论】:

    标签: r combinations


    【解决方案1】:

    方法很多,这里有一个:

    grid <- expand.grid(a=c(T,F), b=c(T,F), c=c(T,F))
    grid$results <- mapply(function(x,y,z) {
        unique(c(if(x) a,if(y) b,if(z) c))
    },grid$a,grid$b,grid$c)
    

    输出:

          a     b     c                results
    1  TRUE  TRUE  TRUE x1, x2, x3, x4, x5, x6
    2 FALSE  TRUE  TRUE     x2, x5, x3, x4, x6
    3  TRUE FALSE  TRUE     x1, x2, x3, x4, x6
    4 FALSE FALSE  TRUE             x3, x4, x6
    5  TRUE  TRUE FALSE     x1, x2, x3, x4, x5
    6 FALSE  TRUE FALSE                 x2, x5
    7  TRUE FALSE FALSE         x1, x2, x3, x4
    8 FALSE FALSE FALSE                   NULL
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-03
      • 2021-01-10
      • 2013-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多