Come generare una matrice di combinazioni
-
10-10-2019 - |
Domanda
Ho 5 elementi ciascuno dei quali può assumere il valore di 1 o -1. Voglio generare una matrice che consiste di righe delle possibili combinazioni. L'ordine degli elementi non ha importanza e l'ordine delle combinazioni non importa. So che potrei fare questo meccanicamente, ma ho pensato che qualcuno deve conoscere una scorciatoia per la generazione di questa matrice. Mi scuso se questo è simile ad altre domande, ma nessuna delle soluzioni che ho trovato può essere applicato a questo particolare problema con le mie capacità di programmazione.
Soluzione
expand.grid(c(-1,1), c(-1,1), c(-1,1), c(-1,1), c(-1,1))
Altri suggerimenti
Per generalizzare la risposta di Greg:
N <- 5
vec <- c(-1, 1)
lst <- lapply(numeric(N), function(x) vec)
as.matrix(expand.grid(lst))
alternativi da pacchetto data.table
è leggermente più veloce rispetto al expand.grid
:
library(data.table)
CJ(c(-1,1), c(-1,1), c(-1,1), c(-1,1), c(-1,1))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow