r - 查找属性变量的组合对

标签 r combinations

我四处寻找解决方案,但找不到确切的解决方案。

给定:

a<-c('a','b','c')
b<-c('d','e','f')
d<-c('g','h')

作为一个更大集合的玩具子集,我希望能够在之间找到唯一的对 属性(向量)集。如果我使用

combn(c(a,b,d),2)

它将返回所有属性元素的所有成对组合。 例如

combn(c(a,b,d),2)

返回c(a,b) c(a,d) c(a,d) c(a,e)...

但我只想要属性之间的元素对。所以我不会看到 a,b 或 a,c 但是 a,d a,e a,f b,d b,e,b,f 等...

我可以用expand.grid(a,b,d)来做到这一点..

   Var1 Var2 Var3
1     a    d    g
2     b    d    g
3     c    d    g
4     a    e    g
5     b    e    g
6     c    e    g
7     a    f    g
8     b    f    g
9     c    f    g
10    a    d    h
11    b    d    h
12    c    d    h
13    a    e    h
14    b    e    h
15    c    e    h
16    a    f    h
17    b    f    h
18    c    f    h

但现在我有一个 n 列维度的组合集。有什么办法限制吗 它只是属性元素对,例如combn(x,2)

主要目标是找到所有属性对之间唯一的元素成对组合的列表,但我不想要元素的组合 在同一属性列中,因为它在我的应用程序中是多余的。

最佳答案

采用网格中每一行中的对的组合,然后过滤以获得唯一的条目,我们有这样的:

unique(do.call(c, apply(expand.grid(a,b,d), 1, combn, m=2, simplify=FALSE)))

返回组合列表:

> L <- unique(do.call(c, apply(expand.grid(a,b,d), 1, combn, m=2, simplify=FALSE)))[1:5]
> length(L) ## 21
> L
## [[1]]
## Var1 Var2 
##  "a"  "d" 
## 
## [[2]]
## Var1 Var3 
##  "a"  "g" 
## 
## [[3]]
## Var2 Var3 
##  "d"  "g" 
## 
## [[4]]
## Var1 Var2 
##  "b"  "d" 
## 
## [[5]]
## Var1 Var3 
##  "b"  "g" 

关于r - 查找属性变量的组合对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16727084/

相关文章:

在 R/shiny 中使用 renderTmap 时的 react 性问题

r - 如何使用R语言中的数据框(关联表)转换向量?

algorithm - 生成任意长度的任意字母表的所有组合

Python:生成列表的所有有序组合

java - 给定两个数组列表,如何计算有效组合数?

r - 将 NA 添加到列表中

r - 使用 ggplot2 在箱线图旁边创建垂直不重叠的标签

r - 是否有用于检查路径中是否存在具有特定扩展名的文件的 R 函数?

java - 如何进行这种组合?

python - 如何找到在 Blackjack 中获得 21 的方法数?