An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120306/71efdc5f/attachment.pl>
[R-es] Buscando la solución más eficiente para generar resultados a partir de un list
12 messages · Ana Pérez V., Jorge I Velez, Carlos J. Gil Bellosta +2 more
Hola, ¿qué tal? Te recomendarÃa que, en lugar de ir de arriba para abajo, fueses de abajo para arriba: 1) Parte de una función simple que, a partir de una serie y periodo calcule tu parámetro de interés. 2) Crea una función que aplique (1) a una serie de periodos (seguramente, un sapply de la anterior). 3) Crea una función que aplique (2) a un sujeto (posiblemente, una lectura de series y de periodos). Y aplÃcala a tu lista de sujetos con un lapply. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El dÃa 6 de marzo de 2012 13:41, Ana Pérez V. <anapv78 en yahoo.es> escribió:
Hola: Tengo una lista de 2 elementos, cada uno de los cuales contiene información relativa a un sujeto (Pablo y Carlos). lSujetos <- list() lSujetos[[1]] <- list(nomfich="Pablo", colTime=5, colVars=c(6,7,8)) lSujetos[[2]] <- list(nomfich="Carlos", colTime=5, colVars=c(6,7,8)) A continuación, leo las series temporales correspondientes a cada individuo. En este caso leo, para cada individuo, las series correspondientes a las columnas de las posiciones 6, 7 y 8 en el fichero: misSeries <- lapply(lSujetos, leeSeries) siendo leeSeries la función que se encarga de recoger esas series. Como consecuencia de lo anterior, en "misSeries" tengo 2 elementos principales y cada uno tiene 3 subelementos (uno por serie temporal). Pues bien, sobre esta variable (misSeries) debo aplicar diferentes funciones para obtener diversos parámetros. Un ejemplo: resul <- lapply(series, function(x) lapply (x, AnalisisMacroscopico)) Pues bien: exactamente esos resultados no los debo generar para cada serie, sino para cada serie y perÃodo, pudiendo existir más de un perÃodo (supongamos 5 perÃodos); de tal modo que debo volcar en fichero una tabla de resultados que tenga exactamente N*3*5 = 30 filas, siendo N el número de individuos (en este caso N=2). ¿Cuál es la manera más eficiente de hacerlo?. Me refiero a la manera de meter en juego al vector de posibles perÃodos, y a la manera de aplicar las funciones pensando en que el objetivo es mostrar esa tabla de resultados. Espero no haberme extendido demasiado. Gracias. Un saludo.     [[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
1 day later
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120307/e6438b8a/attachment.pl>
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120307/ce487eb8/attachment.pl>
Bueno, reutilizando los tres pasos que te indicaba en el correo, previo,
1) Parte de una función simple que, a partir de una serie y periodo calcule tu parámetro de interés. 2) Crea una función que aplique (1) a una serie de periodos (seguramente, un sapply de la anterior). 3) Crea una función que aplique (2) a un sujeto (posiblemente, una lectura de series y de periodos).
lo que deberÃas hacer es: a) Que (2) capturase (¿en un vector?) los parámetros calculados en (1). La función sapply lo hace automáticamente. b) La función (2) los devuelve al nivel superior (en el return). c) La función que aparece en (3) añade a su argumento (el bloque de información del sujeto) la salida de (2). La salida del último lapply serÃa una lista con campos sujeto, serie, periodo, parámetros (y la longitud de periodo y parámetros serÃa igual). De todos modos, igual serÃa más sencillo crear una tabla "desnormalizada" donde tuvieses las columnas nombre, serie, periodo serie se repetirÃa tantas veces como periodo y nombre tantas como series-periodo. Ej.: carlos serie1 periodo1 carlos serie1 periodo2 carlos serie2 periodo1 carlos serie2 periodo2 PodrÃas recorrer esa estructura de datos fácilmente y crear una última columna de parámetros. Igual te resulta más sencillo plantear tu problema asà (en lugar de recorrer un árbol). Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El 7 de marzo de 2012 20:50, Ana Pérez V. <anapv78 en yahoo.es> escribió:
Hola: Gracias, Carlos. Me has iluminado. Ahora querÃa ir un paso más allá. Vamos a ver... Supongamos que a cada serie y perÃodo le aplico una función cuyo resultado debo utilizar para un cálculo posterior; es decir, el cálculo posterior tiene en cuenta la serie, el perÃodo y el valor obtenido en el cálculo previo. Por tal motivo, me interesarÃa que ese valor obtenido que voy a necesitar me quedase incorporado en la lista de partida, esto es, dentro de cada componente (junto con la serie y el perÃodo). ¿Cómo puedo lograrlo?. Gracias. Saludos Ana --- El mar, 6/3/12, Carlos J. Gil Bellosta <cgb en datanalytics.com> escribió: De: Carlos J. Gil Bellosta <cgb en datanalytics.com> Asunto: Re: [R-es] Buscando la solución más eficiente para generar resultados a partir de un list Para: "Ana Pérez V." <anapv78 en yahoo.es> CC: "r-help-es en r-project.org" <r-help-es en r-project.org> Fecha: martes, 6 de marzo, 2012 14:35 Hola, ¿qué tal? Te recomendarÃa que, en lugar de ir de arriba para abajo, fueses de abajo para arriba: 1) Parte de una función simple que, a partir de una serie y periodo calcule tu parámetro de interés. 2) Crea una función que aplique (1) a una serie de periodos (seguramente, un sapply de la anterior). 3) Crea una función que aplique (2) a un sujeto (posiblemente, una lectura de series y de periodos). Y aplÃcala a tu lista de sujetos con un lapply. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El dÃa 6 de marzo de 2012 13:41, Ana Pérez V. <anapv78 en yahoo.es> escribió:
Hola: Tengo una lista de 2 elementos, cada uno de los cuales contiene información relativa a un sujeto (Pablo y Carlos). lSujetos <- list() lSujetos[[1]] <- list(nomfich="Pablo", colTime=5, colVars=c(6,7,8)) lSujetos[[2]] <- list(nomfich="Carlos", colTime=5, colVars=c(6,7,8)) A continuación, leo las series temporales correspondientes a cada individuo. En este caso leo, para cada individuo, las series correspondientes a las columnas de las posiciones 6, 7 y 8 en el fichero: misSeries <- lapply(lSujetos, leeSeries) siendo leeSeries la función que se encarga de recoger esas series. Como consecuencia de lo anterior, en "misSeries" tengo 2 elementos principales y cada uno tiene 3 subelementos (uno por serie temporal). Pues bien, sobre esta variable (misSeries) debo aplicar diferentes funciones para obtener diversos parámetros. Un ejemplo: resul <- lapply(series, function(x) lapply (x, AnalisisMacroscopico)) Pues bien: exactamente esos resultados no los debo generar para cada serie, sino para cada serie y perÃodo, pudiendo existir más de un perÃodo (supongamos 5 perÃodos); de tal modo que debo volcar en fichero una tabla de resultados que tenga exactamente N*3*5 = 30 filas, siendo N el número de individuos (en este caso N=2). ¿Cuál es la manera más eficiente de hacerlo?. Me refiero a la manera de meter en juego al vector de posibles perÃodos, y a la manera de aplicar las funciones pensando en que el objetivo es mostrar esa tabla de resultados. Espero no haberme extendido demasiado. Gracias. Un saludo.     [[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
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120308/49311d00/attachment.pl>
3 days later
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120311/fe3912fc/attachment.pl>
Ana, del correo de Carlos: De todos modos, igual serÃa más sencillo crear una tabla "desnormalizada" donde tuvieses las columnas nombre, serie, periodo serie se repetirÃa tantas veces como periodo y nombre tantas como series-periodo. Ej.: carlos serie1 periodo1 carlos serie1 periodo2 carlos serie2 periodo1 carlos serie2 periodo2 -----Mensaje original----- From: Ana Pérez V. Sent: Sunday, March 11, 2012 8:13 AM To: Carlos J. Gil Bellosta Cc: r-help-es en r-project.org Subject: [R-es] Tabla desnormalizada Hola: Por favor, ¿alguien me puede explicar cómo creo esa tabla desnormalizada a la que alude Carlos y cómo la recorro?. Gracias. Saludos, Ana --- El mié, 7/3/12, Carlos J. Gil Bellosta <cgb en datanalytics.com> escribió: De: Carlos J. Gil Bellosta <cgb en datanalytics.com> Asunto: Re: [R-es] Buscando la solución más eficiente para generar resultados a partir de un list Para: "Ana Pérez V." <anapv78 en yahoo.es> CC: "r-help-es en r-project.org" <r-help-es en r-project.org> Fecha: miércoles, 7 de marzo, 2012 21:02 Bueno, reutilizando los tres pasos que te indicaba en el correo, previo,
1) Parte de una función simple que, a partir de una serie y periodo calcule tu parámetro de interés. 2) Crea una función que aplique (1) a una serie de periodos (seguramente, un sapply de la anterior). 3) Crea una función que aplique (2) a un sujeto (posiblemente, una lectura de series y de periodos).
lo que deberÃas hacer es: a) Que (2) capturase (¿en un vector?) los parámetros calculados en (1). La función sapply lo hace automáticamente. b) La función (2) los devuelve al nivel superior (en el return). c) La función que aparece en (3) añade a su argumento (el bloque de información del sujeto) la salida de (2). La salida del último lapply serÃa una lista con campos sujeto, serie, periodo, parámetros (y la longitud de periodo y parámetros serÃa igual). De todos modos, igual serÃa más sencillo crear una tabla "desnormalizada" donde tuvieses las columnas nombre, serie, periodo serie se repetirÃa tantas veces como periodo y nombre tantas como series-periodo. Ej.: carlos serie1 periodo1 carlos serie1 periodo2 carlos serie2 periodo1 carlos serie2 periodo2 PodrÃas recorrer esa estructura de datos fácilmente y crear una última columna de parámetros. Igual te resulta más sencillo plantear tu problema asà (en lugar de recorrer un árbol). Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El 7 de marzo de 2012 20:50, Ana Pérez V. <anapv78 en yahoo.es> escribió:
Hola: Gracias, Carlos. Me has iluminado. Ahora querÃa ir un paso más allá. Vamos a ver... Supongamos que a cada serie y perÃodo le aplico una función cuyo resultado debo utilizar para un cálculo posterior; es decir, el cálculo posterior tiene en cuenta la serie, el perÃodo y el valor obtenido en el cálculo previo. Por tal motivo, me interesarÃa que ese valor obtenido que voy a necesitar me quedase incorporado en la lista de partida, esto es, dentro de cada componente (junto con la serie y el perÃodo). ¿Cómo puedo lograrlo?. Gracias. Saludos Ana --- El mar, 6/3/12, Carlos J. Gil Bellosta <cgb en datanalytics.com> escribió: De: Carlos J. Gil Bellosta <cgb en datanalytics.com> Asunto: Re: [R-es] Buscando la solución más eficiente para generar resultados a partir de un list Para: "Ana Pérez V." <anapv78 en yahoo.es> CC: "r-help-es en r-project.org" <r-help-es en r-project.org> Fecha: martes, 6 de marzo, 2012 14:35 Hola, ¿qué tal? Te recomendarÃa que, en lugar de ir de arriba para abajo, fueses de abajo para arriba: 1) Parte de una función simple que, a partir de una serie y periodo calcule tu parámetro de interés. 2) Crea una función que aplique (1) a una serie de periodos (seguramente, un sapply de la anterior). 3) Crea una función que aplique (2) a un sujeto (posiblemente, una lectura de series y de periodos). Y aplÃcala a tu lista de sujetos con un lapply. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El dÃa 6 de marzo de 2012 13:41, Ana Pérez V. <anapv78 en yahoo.es> escribió:
Hola:
Tengo una lista de 2 elementos, cada uno de los cuales contiene
información relativa a un sujeto (Pablo y Carlos).
lSujetos <- list()
lSujetos[[1]] <- list(nomfich="Pablo", colTime=5, colVars=c(6,7,8))
lSujetos[[2]] <- list(nomfich="Carlos", colTime=5, colVars=c(6,7,8))
A continuación, leo las series temporales correspondientes a cada
individuo. En este caso leo, para cada individuo, las series
correspondientes a las columnas de las posiciones 6, 7 y 8 en el
fichero:
misSeries <- lapply(lSujetos, leeSeries)
siendo leeSeries la función que se encarga de recoger esas series.
Como consecuencia de lo anterior, en "misSeries" tengo 2 elementos
principales y cada uno tiene 3 subelementos (uno por serie temporal).
Pues bien, sobre esta variable (misSeries) debo aplicar diferentes
funciones para obtener diversos parámetros.
Un ejemplo:
resul <- lapply(series, function(x) lapply (x, AnalisisMacroscopico))
Pues bien: exactamente esos resultados no los debo generar para cada
serie, sino para cada serie y perÃodo, pudiendo existir más de un
perÃodo
(supongamos 5 perÃodos); de tal modo que debo volcar en fichero una
tabla de
resultados que tenga exactamente N*3*5 = 30 filas, siendo N el número de
individuos (en este caso N=2).
¿Cuál es la manera más eficiente de hacerlo?. Me refiero a la manera de
meter en juego al vector de posibles perÃodos, y a la manera de aplicar
las
funciones pensando en que el objetivo es mostrar esa tabla de
resultados.
Espero no haberme extendido demasiado.
Gracias.
Un saludo.
[[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
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120311/4a31ed74/attachment.pl>
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120311/77485dfb/attachment.pl>
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120311/f5973d08/attachment.pl>
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120312/8d5885e8/attachment.pl>