我需要生成1:n
次重复n
次的所有组合。 n = 4
的示例:
expand.grid(1:4, 1:4, 1:4, 1:4)
但是,n
较大时,此方法将需要大量键入。有一种有效的方法可以做到这一点吗?我尝试过paste
,但无法正常工作。
答案 0 :(得分:3)
我们可以rep
分成list
并应用expand.grid
n <- 4
expand.grid(rep(list(seq_len(n)), n))
或使用replicate
expand.grid(replicate(n, seq_len(n), simplify = FALSE))
答案 1 :(得分:3)
首先,您要查找具有重复而非组合的排列。其次,在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)