2010-10-22 84 views
15

我有5个项目,每个项目可以取值为1或-1。我想生成一个由可能组合的行组成的矩阵。项目的顺序无关紧要,组合的顺序无关紧要。我知道我可以机械地做到这一点,但我认为有人必须知道生成此矩阵的捷径。我很抱歉,如果这与其他问题类似,但是我发现的解决方案中没有一个可以应用于具有我的编程技能的特定问题。如何生成组合矩阵

回答

27
expand.grid(c(-1,1), c(-1,1), c(-1,1), c(-1,1), c(-1,1)) 
20

要概括格雷格的回答是:

N <- 5 
vec <- c(-1, 1) 
lst <- lapply(numeric(N), function(x) vec) 
as.matrix(expand.grid(lst)) 
5

data.table包替代方案是稍快比expand.grid

library(data.table) 
CJ(c(-1,1), c(-1,1), c(-1,1), c(-1,1), c(-1,1))