0

如何获得具有重复项的列表的所有组合。重复我的意思是一个元素本身。我正在构建一个对称矩阵。

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

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

谢谢。

4

1 回答 1

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

更新

还有combinations来自“gtools”的,它会给你你喜欢的输出。

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" 
于 2014-02-14T02:27:20.417 回答