[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