R - 列表的组合与重复?

时间:2014-02-14 02:26:05

标签: r list matrix combinations symmetric

如何获得列表重复项的所有组合。重复,我的意思是一个元素与自己。我正在建立一个对称矩阵。

names.list<-c("A","B","C")
as.data.frame(t(combn(names.list,2)))

结果是:

   V1  V2
1   A   B
2   A   C
3   B   C

我想要的时候:

   V1  V2
1   A   A
2   A   B
3   A   C
4   B   B
5   B   C
6   C   C

甚至:

   V1  V2
1   A   A
2   A   B
3   A   C
4   B   A
5   B   B
6   B   C
7   C   A
8   C   B
9   C   C

但我的矩阵很大,所以我希望将组合保持在最小值(最好是第二个结果),因为更多的组合=更多的计算=更长的运行时间..

感谢。

1 个答案:

答案 0 :(得分:1)

听起来您正在寻找expand.grid而不是combn

expand.grid(names.list, names.list)
#   Var1 Var2
# 1    A    A
# 2    B    A
# 3    C    A
# 4    A    B
# 5    B    B
# 6    C    B
# 7    A    C
# 8    B    C
# 9    C    C

更新

“gtools”中还有combinations可以为您提供首选输出。

library(gtools)
combinations(3, 2, names.list, repeats = TRUE)
#     [,1] [,2]
# [1,] "A"  "A" 
# [2,] "A"  "B" 
# [3,] "A"  "C" 
# [4,] "B"  "B" 
# [5,] "B"  "C" 
# [6,] "C"  "C"