Tengo una secuencia que varía en longitud, p. algo así como:División de una secuencia de longitud desconocida en un cierto número de conjuntos en R
items <- 1:4
quiero dividirlo en todas las combinaciones posibles de n
número de conjuntos. Así dicen n
es dos, quiero volver:
Set A Set B
----- -----
1 2 3 4
1 2 3 4
1 2 3 4
1 3 2 4
etc. La disposición dentro de conjuntos no importa es decir, el conjunto {1
, 2
, 3
} es el mismo que {2
, 1
, 3
}. Los conjuntos no pueden estar vacíos.
mejor que pude llegar a (usando permn
del paquete combinat
) es:
n <- 2
r <- 1:length(items)
arrangements <- NULL
for (i in 1:(n-1)) {
A <- r[(1:i)]
B <- r[-(1:i)]
arrangements <- c(arrangements, apply(do.call(rbind, permn(1:length(items))), 1, function(z) list(z[A], z[B])))
}
que es bastante inútil porque devuelve conjuntos que son iguales, es decir {1
, 2
, 3
} y {2
, 1
, 3
} y no es lo suficientemente flexible como para manejar valores diferentes de n
. Alguien tiene alguna idea de cómo puedo hacer esto? Gracias.