如何获得列表与重复项的所有组合。重复,我的意思是一个元素与自己。我正在建立一个对称矩阵。
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
但我的矩阵很大,所以我希望将组合保持在最小值(最好是第二个结果),因为更多的组合=更多的计算=更长的运行时间..
感谢。
答案 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"