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

Olivier Nuñez onunez en iberstat.es
Jue Dic 9 23:13:57 CET 2010


Mira por ejemplo la funci—n combinations del paquete gtools, es  
posible que ayude a solucionar tu problema.

 > require(gtools)
 > m=3;n=5
 > combinations(n,m)
       [,1] [,2] [,3]
  [1,]    1    2    3
  [2,]    1    2    4
  [3,]    1    2    5
  [4,]    1    3    4
  [5,]    1    3    5
  [6,]    1    4    5
  [7,]    2    3    4
  [8,]    2    3    5
  [9,]    2    4    5
[10,]    3    4    5


Un saludo. Olivier
--  
____________________________________

Olivier G. Nu–ez
Email: onunez en iberstat.es
Tel : +34 663 03 69 09
Web: http://www.iberstat.es

____________________________________




El 09/12/2010, a las 22:55, Fernando Sanchez escribi—:

> 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]]
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es



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