我有5个项目,每个项目可以取值1或-1。我想生成一个由可能组合的行组成的矩阵。项目的顺序无关紧要,组合的顺序无关紧要。我知道我可以机械地做到这一点,但我认为有人必须知道生成这个矩阵的捷径。如果这与其他问题类似,我很抱歉,但我发现的解决方案都不能用我的编程技巧应用于这个特定的问题。
答案 0 :(得分:29)
expand.grid(c(-1,1), c(-1,1), c(-1,1), c(-1,1), c(-1,1))
答案 1 :(得分:22)
概括格雷格的回答:
N <- 5
vec <- c(-1, 1)
lst <- lapply(numeric(N), function(x) vec)
as.matrix(expand.grid(lst))
答案 2 :(得分:5)
与data.table
相比,expand.grid
包的替代方案稍快一些:
library(data.table)
CJ(c(-1,1), c(-1,1), c(-1,1), c(-1,1), c(-1,1))