2012-06-15 10 views
11

Actualmente estoy trabajando en un script que debe analizar un conjunto de datos basado en un archivo de 'configuración'.Lectura y uso de un archivo de configuración personalizado

La entrada de este fichero es por ejemplo:

configuration.txt:

123456, 654321 
409,255,265 
1 

Puede contener valores onther también, pero lo harán al ser numérico. En el ejemplo descrito anteriormente, el archivo debe leerse como sigue:

timestart <- 123456 
timeend <- 654321 
exclude <- c(409,255,265) 
paid <- 1 

La disposición del archivo de configuración no es fijo, sino que debe contener un tiempo de inicio (Unix) una hora de finalización (Unix) una matriz con números para excluir y otros campos. Al final, debe construirse a partir de los campos que un usuario especifica en una GUI. No sé qué formato sería mejor para ese caso, pero tan pronto como tenga estos elementos básicos en funcionamiento, no creo que sea un gran problema.

Pero eso dificultará saber qué valores pertenecen a cada variable.

+0

Simplemente escriba el archivo de configuración como un archivo '.r' que contenga el código exactamente como lo escribió, luego' fuente() '. Las variables se definirán en su entorno. – Andrie

+3

Pregunta similar: http://stackoverflow.com/q/5272846/602276 – Andrie

+0

Como usuario de R/desarrollador web, sugeriría JSON. Hay paquetes 'rjson' y' RJSONIO' para la (de) serialización apropiada. Pero los guiones R de IMO 'source()' son la mejor manera de hacerlo, como sugirió @Andrie. – aL3xa

Respuesta

21

De hecho, como sugirió Andrie, el uso de un archivo de configuración .r es la manera más fácil de hacerlo. ¡Pasé por alto esa opción por completo!

Por lo tanto, basta con un archivo .R con las variables ya en ella:

#file:config.R 
timestart <- 123456 
timeend <- 654321 
exclude <- c(409,255,265) 
paid <- 1 

En otro uso de la escritura:

y listo. Gracias Andrie!

+0

+1 Eso es todo. Bienvenido a SO. – Andrie

+0

Una vez más, realmente no pensé en esto. Aunque es muy simple. Incluso para su posterior uso con la entrada derivada de un sitio web, esto todavía se puede utilizar perfectamente, supongo. –

+1

Esto es bueno, pero idealmente me gustaría cargar la configuración en un espacio de nombres separado para que no esté contaminando la lista de variables globales. Supongo que podría definir mi propia lista nombrada dentro de un archivo .R ... – Leonid

0

Otra alternativa sería utilizar el paquete config. Esto permite configurar los valores de configuración para que se ejecuten de acuerdo con el entorno en funcionamiento (producción, prueba, etc.). Se accede a todos los parámetros mediante una lista y se cargan mediante un archivo de configuración de formato de texto YAML.

Más detalles y ejemplos acerca de configuración se pueden encontrar aquí: https://cran.r-project.org/web/packages/config/vignettes/introduction.html

Si quiere cargar un JSON, TOML, YAML, o un archivo de configuración de texto INI, consulta el paquete configr.

Cuestiones relacionadas