2010-10-22 20 views
15

Tengo 5 elementos, cada uno de los cuales puede tomar el valor de 1 o -1. Quiero generar una matriz que consta de filas de las posibles combinaciones. El orden de los artículos no importa y el orden de las combinaciones no importa. Sé que podría hacerlo mecánicamente, pero pensé que alguien debe conocer un atajo para generar esta matriz. Me disculpo si esto es similar a otras preguntas, pero ninguna de las soluciones que he encontrado se puede aplicar a este problema en particular con mis habilidades de programación.Cómo generar una matriz de combinaciones

Respuesta

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

Para generalizar la respuesta de Greg:

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

alternativas de data.table paquete es ligeramente más rápido en comparación con expand.grid:

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