[R-es] Combinatoria

Carlos Ortega cof en qualityexcellence.es
Dom Mar 22 12:15:45 CET 2015


Hola Miguel,

Sí se pueden obtener las variaciones con y sin repetición en R.
Eso sí están un poco escondidas...

Se pueden calcular de esta forma:

#----------------------
> #Cargar el paquete gtools
> library(gtools)
> #Definir el conjunto sobre el que se hará el cálculo
> x <- c('rojo', 'azul', 'verde')
> #Utilizar la función "permutations()" modificando el valor de "r" y
> #modificando el parámetro "repeats.allowed" dependiendo si sequieren con
o sin repetición
> permutations(n=3, r=2, v=x, repeats.allowed=FALSE)
     [,1]    [,2]
[1,] "azul"  "rojo"
[2,] "azul"  "verde"
[3,] "rojo"  "azul"
[4,] "rojo"  "verde"
[5,] "verde" "azul"
[6,] "verde" "rojo"
> permutations(n=3, r=2, v=x, repeats.allowed=TRUE)
      [,1]    [,2]
 [1,] "azul"  "azul"
 [2,] "azul"  "rojo"
 [3,] "azul"  "verde"
 [4,] "rojo"  "azul"
 [5,] "rojo"  "rojo"
 [6,] "rojo"  "verde"
 [7,] "verde" "azul"
 [8,] "verde" "rojo"
 [9,] "verde" "verde"
#----------------------


Saludos,
Carlos Ortega
www.qualityexcellence.es


El 22 de marzo de 2015, 9:02, Our Utopy <ourutopy en gmail.com> escribió:

> Hola de nuevo amigos, Gracias por vuestras respuestas. Un placer levantarme
> esta mañana y ver que alguien había tratado de ayudarme. Espero en unas
> semanas poder también ser yo útil a quien lo necesite.
>
> Me explico de nuevo. Estoy aprendiendo y mi primera visión, antes del Data
> Mining y las redes neuronales a las que quiero llegar, es ir solucionando
> los problemas básicos además de explicarles R a mis propios alumnos en
> lugar de Wiris (idóneo para secundaria) o Maxima.
>
> Mi problema es de combinatoria básica, quiero calcular Cm,n  Pn  Vm,n  y lo
> mismo con repetición. Son cosas muy básicas de secundaria que cualquier
> programa o calculadora de mano las resuelve. Supuse que R en su módulo
> básico o CORE las respondería al igual que responde a logaritmos en
> cualquier base, determinantes e inversas de matrices.
>
> Pero no, hay que instalar paquetes adicionales.
>
> Buscando encontré que el paquete *combinat* incluye dos de estas funciones
>
>    - *combn(m,n)*
>    - *permn(n)*
>    - *e incluso mCn(m,n)*
>
> N es solo que haga el cálculod e cuantas son sino que las escribe todas,
> por ejemplo
>
> > combn(4,2)
>      [,1] [,2] [,3] [,4] [,5] [,6]
> [1,]    1    1    1    2    2    3
> [2,]    2    3    4    3    4    4
>
> > permn(3)
> [[1]]
> [1] 1 2 3
>
> [[2]]
> [1] 1 3 2
>
> [[3]]
> [1] 3 1 2
>
> [[4]]
> [1] 3 2 1
>
> [[5]]
> [1] 2 3 1
>
> [[6]]
> [1] 2 1 3
>
>
> Y mCn las calcula, sin escribirlas:
>
> > nCm(4,2)
> [1] 6
>
> Pero me chocó que NO incluyese Variaciones con y sin repetición, y
> combinaciones y permutaciones con repetición. Tanto que me las calcule como
> que me las escriba. Al menos yo no las encuentro a pesar de ser una
> cuestión muy básica en combinatoria que ayuda a calcular probabilidades y
> claro, ¡es que R es un programa de Estadística!
>
> De ahí mi pregunta al grupo.
>
> Si tengo que hacerme mi propia librería, pues creo que en unos días seré
> capaz de hacerlo. Ayer precisamente ya estuve leyendo sobre construirme mis
> propias funciones, pero es que me choca que no haya ninguna librería entre
> las 6200 del repositorio que ya lo incluya.
>
> Esa era mi pregunta.
>
> Gracias anticipadas.
>
> Miguel
>
>
>
>
>
>
>
>
>
>
>
> El 21 de marzo de 2015, 19:35, Francisco Rodríguez <fjroar en hotmail.com>
> escribió:
>
> > En relación con lo que comenta Carlos, por ejemplo para el caso de las
> > Variaciones sin Repetición, puede ser instructivo
> > enseñar como se construye como por ejemplo:
> >
> >
> > VsinR <- function(m, n){
> >
> >   return (factorial(m)/factorial(m-n))
> > }
> >
> >
> > VsinR(9,3)
> >
> > -------------------------
> >
> >
> > Creo que con la función factorial que viene por defecto en R puedes
> > construir siguiendo este modelo rápidadmente
> > casi cualquier función de las de bachillerato. Las VconR serían m elevado
> > a n
> >
> > Quizás la única que merezca la pena construir es la de Permutaciones con
> > Repetición porque la parte de repetición puede tener más variedad, voy a
> > mirar si lo encuentro y si no una función lo puede resolver.
> > PR(m; n1, ..., nk) donde n1+...+nk = m y PR(m;n1, ...,nk) = m!/(n1!
> > ·...·nk!)
> >
> >
> > Un saludo
> >
> >
> >
> >
> > > Date: Sat, 21 Mar 2015 16:36:50 +0100
> > > From: cgb en datanalytics.com
> > > To: ourutopy en gmail.com
> > > CC: r-help-es en r-project.org
> > > Subject: Re: [R-es] Combinatoria
> >
> > >
> > > Hola, ¿qué tal?
> > >
> > > ¿Qué quieres hacer, construir las
> > > combinaciones/permutaciones/variaciones o calcular cuántas hay?
> > >
> > > Es improbable que encuentres funciones que resuelvan exactamente un
> > > problema específico. Pero sí que podrás, con no mucho esfuerzo,
> > > extender lo que hay para atacar esos problemas.
> > >
> > > Un saludo y suerte con R,
> > >
> > > Carlos J. Gil Bellosta
> > > http://www.datanalytics.com
> > >
> > > El día 21 de marzo de 2015, 8:39, Our Utopy <ourutopy en gmail.com>
> > escribió:
> > > > Hola buenos días, me presento, me llamo Miguel y 'soy de' y 'vivo en'
> > > > Galicia.
> > > > Soy profesor de secundaria (Bachillerato Adultos) y llevo 15 días
> > > > estudiando R a un buen ritmo, pero todavía me faltan miles de cosas.
> > > >
> > > > He visto que R facilita, no solo el análisis de datos y que posee una
> > > > potencia en cálculos estadísticos a cualquier nivel, sino gran caudal
> > de
> > > > recursos para Data Mining, Redes Neuronales, reconocimiento de
> > patrones y
> > > > probablemente todo cuanto deseemos, pero ... aqui va mi primera
> > > > pregunta
> > > >
> > > > 1. Si quiero calcular unas combinaciones, la función *combn* ó la
> > *nCm* me
> > > > lo resuelven
> > > > 2. Si quiero permutaciones, entonces ya tengo que cargar el paquete
> > > > combinat
> > > > 3. Pero no encuentro , y no puedo entenderlo, que no encuentre una
> > > > función análoga para las variaciones con y sin repetición y para las
> > > > permutaciones con repetición. y ya llevo varias horas buscando ....
> ¡!
> > > > puede que ayer y hoy me encuentre algo espeso, no lo descarto.
> > > >
> > > > Me podríais ayudar en esta tan básica duda.
> > > >
> > > > Gracias
> > > >
> > > > [[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
> > >
> > > _______________________________________________
> > > R-help-es mailing list
> > > R-help-es en r-project.org
> > > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
>
>         [[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
>



-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

	[[alternative HTML version deleted]]



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