我需要生成1:n
重复n
次的所有组合。n = 4
示例:
expand.grid(1:4, 1:4, 1:4, 1:4)
但是,当n
是一个较大的数字时,此方法将需要大量键入。有没有有效的方法可以做到这一点?我尝试了paste
,但无法使其工作。
首先,您正在寻找重复的排列,而不是组合。其次,有几个软件包可以在R
中有效地获得此服务。有经典的包gtools
,还有两个高效的编译库arrangements
和RcppAlgos
(我是作者(:
## library(gtools)
gtools::permutations(4, 4, repeats.allowed = TRUE)
## library(arrangements)
arrangements::permutations(4, 4, replace = TRUE)
## library(RcppAlgos)
RcppAlgos::permuteGeneral(4, 4, TRUE)
我们可以rep
许可到一个list
并应用expand.grid
n <- 4
expand.grid(rep(list(seq_len(n)), n))
或使用replicate
expand.grid(replicate(n, seq_len(n), simplify = FALSE))