r语言 - 使用具有 n 个元素的 expand.grid 函数



我需要生成1:n重复n次的所有组合。n = 4示例:

expand.grid(1:4, 1:4, 1:4, 1:4)

但是,当n是一个较大的数字时,此方法将需要大量键入。有没有有效的方法可以做到这一点?我尝试了paste,但无法使其工作。

首先,您正在寻找重复的排列,而不是组合。其次,有几个软件包可以在R中有效地获得此服务。有经典的包gtools,还有两个高效的编译库arrangementsRcppAlgos(我是作者(:

## 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))

最新更新