[R-es] Problemas con la funcion "apply"

javier bueno enciso jbuenoenci@o @ending from hotm@il@com
Jue Jul 12 17:08:58 CEST 2018


Muchas gracias Carlos,


Sin embargo lo que me crea es una matriz de 174724 elementos (148x 148).  Lo que yo quiero en el output es una matriz de 1672 elementos (los cuatro percentiles especificados en "quantvector" de columnas x 148 filas de las deiferentes distribuciones).


A modo de curiosidad. Mi base de datos original en verdad tiene muchas mas variables a parte de"shape1" y "shape2". Usando esta base de datos original la funcion 'apply' no funcionaria verdad? Para correr tu codigo he creado una nueva data.frame con solo las dos columnas de interes.


Muchas gracias de nuevo por el tiempo empleado en atenderme.


Atentamente,

Javi
________________________________
De: Carlos Ortega <cof using qualityexcellence.es>
Enviado: jueves, 12 de julio de 2018 13:15
Para: javier bueno enciso
Cc: r-help-es using r-project.org
Asunto: Re: [R-es] Problemas con la funcion "apply"

Hola,

Efectivamente la funci�n "apply" te ayudar�a mucho en este caso, y no hace falta que pases por crear la funci�n y evaluarla como haces.
Ser�a algo as�.

quantvector=c(0.001,0.005,0.95,0.999)
res_ults <- apply(tu_dataframe, 1, qbeta, p=quantvector, shape1 = tu_dataframe$shape1, shape2 = tu_dataframe$shape2)

El "1" de apply est� indicando el MARGIN sobre el que ha de actuar de tu dataframe, en este caso las filas.
Entiendo que tu dataframe tienbe una columna que es el "shape1" y otra el "shape2".


Saludos,
Carlos Ortega
www.qualityexcellence.es<http://www.qualityexcellence.es>
QualityExcellence<http://www.qualityexcellence.es/>
www.qualityexcellence.es
QUALITY EXCELLENCE, consultores en calidad, procesos y mejora continua







El 12 de julio de 2018, 11:44, javier bueno enciso <jbuenoenciso using hotmail.com<mailto:jbuenoenciso using hotmail.com>> escribi�:
Buenos dias!


Os escribo para ver si me podeis ayudar con un asunto en el que me he quedado un poco encallado.


Lo que tengo que hacer es sacar los percentiles (0.001, 0.005, 0.95 y 0.999) de varias distribuciones beta, concretamente 418. Cada distribucion esta definida por los parametros "shape1" y "shape2". Por lo tanto tengo una base de datos de 418 filas y en cada una de ellas los parametros que me definen la distribucion beta, shape1 y shape2.


Tengo el siguiente codigo:


distrname="beta"
shape1= 0.2 #ejemplo
shape2= 0.3 #ejemplo
quantvector=c(0.001,0.005,0.95,0.999)
(paste("qvector=q",distrname,"(quantvector, shape1, shape2)",sep=""))
eval(parse(text= paste("qvector=q",distrname,"(quantvector, shape1, shape2)",sep="") ))
qvector

Donde tengo problemas es en aplicar el anterior codigo para cada una de las filas de mi base de datos, especificando que shape1 es "mydata$shape1" y shape2 es "mydata$shape2". He pensado que quizas podria hacer una funcion con el anterior codigo y hacer un loop posterior para que me la aplique para cada una de mis filas.

Sin embargo estoy convencido de que tiene que haber una manera mas directa utilizando la funcion "apply" de R o alguna de sus "hermanas", que funcionaria mejor.

Me podriais ayudar? cualquier pista me seria de gran utilidad.

Muchas gracias!!

Javi

P.D. si necesitais cualquier otra info o un ejemplo de los datos, no dudeis en pedirmelo.





        [[alternative HTML version deleted]]

_______________________________________________
R-help-es mailing list
R-help-es using r-project.org<mailto:R-help-es using r-project.org>
https://stat.ethz.ch/mailman/listinfo/r-help-es



--
Saludos,
Carlos Ortega
www.qualityexcellence.es<http://www.qualityexcellence.es>

	[[alternative HTML version deleted]]



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