生成所有可能的排列(或n元组)

时间:2012-02-23 23:11:58

标签: r

我想创建一个包含10个变量的所有可能排列的data.frame,可以是1或2

2*2*2*2*2*2*2*2*2*2 = 1024 # possible

1,1,1,1,1,1,1,1,1,1
1,2,1,1,1,1,1,1,1,1
1,2,2,1,1,1,1,1,1,1
1,2,2,2,1,1,1,1,1,1
...

在R?中有“快速”的方法吗?

2 个答案:

答案 0 :(得分:29)

怎么样:

tmp = expand.grid(1:2,1:2,1:2,1:2,1:2,1:2,1:2,1:2,1:2,1:2)

或者这个(感谢泰勒):

x <- list(1:2)
tmp = expand.grid(rep(x, 10))

答案 1 :(得分:0)

有人问了有关字母的问题,例如here。通常会提供expand.grid解决方案,但我发现这要简单得多:

sapply(LETTERS[1:3], function(x){paste0(x, LETTERS[1:3])}) %>% c()
# [1] "AA" "AB" "AC" "BA" "BB" "BC" "CA" "CB" "CC"