2012-06-15 16 views
11

Attualmente sto lavorando a uno script che dovrebbe analizzare un set di dati basato su un file di 'configurazione'.Lettura e utilizzo di un file di configurazione personalizzato

L'ingresso di questo file è per esempio:

configuration.txt:

123456, 654321 
409,255,265 
1 

può contenere valori onther pure, ma saranno al essere numerico. Nell'esempio sopra descritto il file deve essere letto come segue:

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

Il layout del file di configurazione non è fisso, ma dovrebbe contenere un tempo di avviamento (unix) un tempo di fine (unix) una matrice con numeri da escludere e altri campi. Alla fine dovrebbe essere costruito dai campi che un utente specifica in una GUI. Non so quale sia la formattazione più adatta per quel caso, ma non appena avrò a disposizione queste nozioni di base, non penso che sarà un grosso problema.

Ma ciò renderà più difficile sapere quali valori appartengono a quale variabile.

+0

Basta scrivere il file di configurazione come un file '.r' contenente codice esattamente come lo hai scritto, quindi' source() 'it. Le variabili verranno quindi definite nel proprio ambiente. – Andrie

+3

Domanda simile: http://stackoverflow.com/q/5272846/602276 – Andrie

+0

Come utente R/sviluppatore web, suggerirei JSON. Esistono pacchetti 'rjson' e' RJSONIO' per la (de) serializzazione appropriata. Ma gli script R di source() 'IMO di IMO sono il modo migliore di andare, come suggerito da @Andrie. – aL3xa

risposta

21

Infatti, come suggerito da Andrie, l'uso di un file di configurazione .r è il modo più semplice per farlo. Ho trascurato completamente questa opzione!

Quindi, basta fare un file .R con le variabili già in esso:

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

In altro uso script:

E voilà. Grazie Andrie!

+0

+1 Questo è tutto. Benvenuti in SO. – Andrie

+0

Ancora una volta, davvero non ci ho pensato. Anche se è molto semplice. Anche per un uso successivo con l'input derivato da un sito Web, questo può ancora essere usato perfettamente, credo. –

+1

Questo è bello, ma idealmente vorrei caricare le impostazioni in un namespace separato in modo da non inquinare l'elenco delle variabili globali. Suppongo che potrei definire la mia lista nominata all'interno di un file .R ... – Leonid

0

Un'altra alternativa sarebbe utilizzare il pacchetto config. Ciò consente di impostare i valori di configurazione da eseguire in base all'ambiente di esecuzione (produzione, test, ecc.). Tutti i parametri sono accessibili da un elenco e vengono caricati da un file di configurazione in formato testo YAML.

Maggiori dettagli ed esempi su configurazione possono essere trovate qui: https://cran.r-project.org/web/packages/config/vignettes/introduction.html

Se si vuole caricare un JSON, TOML, YAML, o file di configurazione di testo INI, si veda anche il pacchetto configr.

Problemi correlati