[R-es] Combinaciones de m elementos tomados de n en n

Fernando Sánchez fsanchez en euclides.com
Jue Dic 9 23:12:58 CET 2010


Hola, quiero pedir disculpas por mi correo anterior, no sé muy bien qué ha
ocurrido con el código R que copié y pegué. Os envío de nuevo el texto ! mil
disculpas a todos los suscritos a la lista!

Hola a todos, como bien sabéis, se llama combinaciones de m elementos
tomados de n en n (m>=n) a todas las agrupaciones posibles que pueden
hacerse con los m elementos de forma que: no entran todos los elementos, no
importa el orden y no se repiten los elementos.


En mi caso, quiero hacer una lista que contenga todas las combinaciones de m
elementos tomados de n en n. He programado el siguiente código que creo es
correcto:

a<-0
b<-0
for (i in 1:18) {
for (j in 1:17) {
for (k in 1:16) {                        
for (l in 1:15) {
for (m in 1:14) {
for (n in 1:13) {
for (o in 1:12) {
for (p in 1:11) {
if(i!=j & i!=k & i!=l & i!=m & i!=n & i!=o & i!=p & j!=k & j!=l & j!=m &
j!=n & j!=o & j!=p & k!=l & k!=m & k!=n & k!=o & k!=p ) {
# hago dos if por claridad y longitud de la instrucción
if(l!=m & l!=n & l!=o & l!=p & m!=n & m!=o & m!=p & n!=o & n!=p & o!=p) {   
                                                                           
            
b<-cbind(i,j,k,l,m,n,o,p)
                       a<-rbind(a,b)
                       }
                       }
                       }
                       }
                       }
                       }
                       }
                       }
                       }
                       }

Este código tiene desde mi punto de vista dos problemas:
a-Tarda mucho en ejecutarse.
b-No es elegante.

Mi pregunta es:  ¿se os ocurre alguna forma más sencilla de hacer lo mismo? 

Saludos y muchas gracias,

Fernando


      
	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es