Eva Prieto Castro
2012-Jul-22 14:02 UTC
[R-es] Duda acerca de "resetear" elementos de una lista
Hola: Tengo una serie de funciones que he integrado formando un paquete, y dichas funciones manejan una lista global en la cual se alojan los parámetros de configuración del análisis, pero también los data.frame de resultados numéricos. La pregunta es la siguiente: en cada análisis algunos data.frame de resultados se actualizarán pero otros no (si el usuario no activó ese análisis en particular), con lo cual había pensado en "resetear" esos data.frame de resultados antes de iniciar el análisis, para que quede más coherente. ¿Cómo lo hago?. ¿Simplemente los "reinicio" haciendo nombre.data.frame <- as.data.frame() o hay algo más eficiente que deba hacer? Gracias. Eva [[alternative HTML version deleted]]
Luciano Selzer
2012-Jul-23 14:52 UTC
[R-es] Duda acerca de "resetear" elementos de una lista
Eva, Quizá sea mejor que te replantees estás estructurando el paquete. En general es mala práctica hacer funciones que modifiquen variables globales porque pueden modificar algo que el usuario había guardado con el mismo nombre y puede producir bugs difíciles de determinar. Para mi una mejor opción, es crear una función que haga de envoltorio a las otras funciones que realizan el análisis. Suponiendo que son dos funciones que realizan el análisis: envoltorio <- function(datos, opciones) { intermedio <- foo(datos, opciones) respuesta <- bar(intermedio) return(respuesta) } Luciano El 22 de julio de 2012 11:02, Eva Prieto Castro <evapcastro@yahoo.es>escribió:> Hola: > > Tengo una serie de funciones que he integrado formando un paquete, y > dichas funciones manejan una lista global en la cual se alojan los > parámetros de configuración del análisis, pero también los data.frame de > resultados numéricos. > > La pregunta es la siguiente: en cada análisis algunos data.frame de > resultados se actualizarán pero otros no (si el usuario no activó ese > análisis en particular), con lo cual había pensado en "resetear" esos > data.frame de resultados antes de iniciar el análisis, para que quede más > coherente. ¿Cómo lo hago?. ¿Simplemente los "reinicio" haciendo > > nombre.data.frame <- as.data.frame() > > o hay algo más eficiente que deba hacer? > > Gracias. > > Eva > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
Luciano Selzer
2012-Jul-23 18:04 UTC
[R-es] Duda acerca de "resetear" elementos de una lista
Eva, Por favor mantén a lista dentro de los remitentes, tus preguntas podrían serle útiles a alguien más. De todas formas "resetear" la lista o cualquier elemento es simplemente sobreescribirlo con uno vacío. Que se crea con list, data.frame, matrix, etc. La función as.* solo sirve para transformar objetos de un tipo a otro. Luciano El 23 de julio de 2012 13:06, Eva Prieto Castro <evapcastro@yahoo.es>escribió:> Hola, Luciano: > > Entiendo tu planteamiento, pero sucede que el usuario final prefiere no > tener que pasar como parámetro esa lista que mantiene los datos, con lo > cual para poder llamar directamente del siguiente modo > > envoltorio() > > no me queda otra más que utilizar la variable global. > > Además, hay una serie de funciones de interfaz que he creado para que el > usuario pueda alterar los parámetros de configuración de esa lista global, > a fin de que tenga impacto en el análisis posterior. > > ¿Qué me sugieres?. > > > Gracias. > > Eva > > --- El *lun, 23/7/12, Luciano Selzer <luciano.selzer@gmail.com>* escribió: > > > De: Luciano Selzer <luciano.selzer@gmail.com> > Asunto: Re: [R-es] Duda acerca de "resetear" elementos de una lista > Para: "Eva Prieto Castro" <evapcastro@yahoo.es> > CC: r-help-es@r-project.org > Fecha: lunes, 23 de julio, 2012 16:52 > > > Eva, > Quizá sea mejor que te replantees estás estructurando el paquete. En > general es mala práctica hacer funciones que modifiquen variables globales > porque pueden modificar algo que el usuario había guardado con el mismo > nombre y puede producir bugs difíciles de determinar. Para mi una mejor > opción, es crear una función que haga de envoltorio a las otras funciones > que realizan el análisis. > > Suponiendo que son dos funciones que realizan el análisis: > > envoltorio <- function(datos, opciones) { > intermedio <- foo(datos, opciones) > respuesta <- bar(intermedio) > return(respuesta) > } > > Luciano > > > El 22 de julio de 2012 11:02, Eva Prieto Castro <evapcastro@yahoo.es<http://mc/compose?to=evapcastro@yahoo.es> > > escribió: > > Hola: > > Tengo una serie de funciones que he integrado formando un paquete, y > dichas funciones manejan una lista global en la cual se alojan los > parámetros de configuración del análisis, pero también los data.frame de > resultados numéricos. > > La pregunta es la siguiente: en cada análisis algunos data.frame de > resultados se actualizarán pero otros no (si el usuario no activó ese > análisis en particular), con lo cual había pensado en "resetear" esos > data.frame de resultados antes de iniciar el análisis, para que quede más > coherente. ¿Cómo lo hago?. ¿Simplemente los "reinicio" haciendo > > nombre.data.frame <- as.data.frame() > > o hay algo más eficiente que deba hacer? > > Gracias. > > Eva > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org <http://mc/compose?to=R-help-es@r-project.org> > https://stat.ethz.ch/mailman/listinfo/r-help-es > > >[[alternative HTML version deleted]]