Quali sono i modi efficienti per organizzare il codice R e l'output? [chiuso]


23

Sto cercando input su come gli altri organizzano il loro codice R e output.

La mia pratica attuale è quella di scrivere il codice in blocchi in un file di testo come tale:

#=================================================
# 19 May 2011
date()
# Correlation analysis of variables in sed summary
load("/media/working/working_files/R_working/sed_OM_survey.RData")
# correlation between estimated surface and mean perc.OM in epi samples
cor.test(survey$mean.perc.OM[survey$Depth == "epi"], 
    survey$est.surf.OM[survey$Depth   == "epi"]))
#==================================================

Quindi incollo l'output in un altro file di testo, di solito con alcune annotazioni.

I problemi con questo metodo sono:

  1. Il codice e l'output non sono esplicitamente collegati se non per data.
  2. Il codice e l'output sono organizzati in ordine cronologico e quindi possono essere difficili da cercare.

Ho preso in considerazione l'idea di creare un documento Sweave con tutto da quando ho potuto creare un sommario, ma sembra che potrebbe essere più una seccatura che i benefici che fornirebbe.

Fammi sapere di tutte le routine efficaci che hai per organizzare il tuo codice R e l'output che consentirebbe una ricerca efficiente e la modifica dell'analisi.


2
Solo per evitare copia / incolla, sink()o capture.output()potrebbero essere i tuoi amici. Vale la pena prendere in considerazione le utilità di reporting, come Hmisc , Sweave o brew (punto 1). I sistemi di versioning ( rcs , svn o git ) potrebbero aiutare con il punto 2.
chl

@chl - grazie per i suggerimenti. Non ero a conoscenza di sink()e capture.output(). È fantastico.
DQdlM,

1
oggi c'è anche knitr!
kjetil b halvorsen,

Risposte:


22

Non sei la prima persona a porre questa domanda.


+1 e il primo link che fornisci fa riferimento a una discussione al loro interno :-)
chl

@chl Grazie! Mi chiedevo se questa domanda fosse un duplicato e dovesse essere chiusa ...
Bernd Weiss,

Lo è, IMO. Ma poiché non ci sono voti da chiudere, sono riluttante a chiuderlo. Inoltre, quello più vecchio era più generale, ma una domanda molto simile è stata chiusa in passato. Aspettiamo e vediamo come va.
chl

grazie per l'elenco! Questo è molto utile Ho pensato che non ero il primo ad avere questa domanda, ma non mi sembrava di trovare molto con la mia ricerca (ovviamente inetto) iniziale.
DQdlM,

6

Io per primo organizzo tutto in 4 file per ogni progetto o analisi. (1) 'codice' dove memorizzo i file di testo delle funzioni R. (2) 'sql' Dove tengo le query usate per raccogliere i miei dati. (3) 'dat' Dove conservo copie (di solito csv) dei miei dati grezzi ed elaborati. (4) 'rpt' Dove memorizzo i report che ho distribuito.

TUTTI i miei file sono nominati usando nomi molto dettagliati come 'analysis_of_network_abc_for_research_on_modified_buffer_19May2011'

Scrivo anche una documentazione dettagliata in cui organizzo le ipotesi, i presupposti, i criteri di inclusione ed esclusione e le misure che intendo intraprendere per raggiungere il mio obiettivo. Tutto ciò ha un valore inestimabile per la ricerca ripetibile e facilita il mio processo annuale di definizione degli obiettivi.


2

Ora che sono passato a Sweave, non voglio più tornare indietro. Soprattutto se si dispone di grafici come output, è molto più facile tenere traccia del codice utilizzato per creare ogni grafico. Inoltre, rende molto più semplice correggere una cosa minore all'inizio e farla scorrere nell'output senza dover rieseguire nulla manualmente.


1
Sweave è meraviglioso. Ci vuole un po 'per abituarsi, ma se conosci già TeX e R, è la scelta ovvia. Ti consente anche di non perdere mai più tempo ad allineare mai più le colonne della tabella, il che è carino.
richiemorrisroe,

Grazie per l'input. Le mie 2 preoccupazioni con Sweave sono 1) Finirò con un bazillion di file nella mia directory - specialmente con molte cifre, e 2) Dovrò stare molto attento con il codice per evitare il singhiozzo ogni volta che compilo l'intero documento (ad esempio, penso che qualcosa sia caricato e non lo sia). Hai questi problemi?
DQdlM,

1) È possibile scegliere di eliminare i file intermedi, se lo si desidera; Uso lo script Sweave.sh ( cran.r-project.org/contrib/extra/scripts/Sweave.sh ) che lo fa automaticamente; sebbene possa essere facilmente spento. Se lo fai, assicurati di sapere cosa verrà eliminato prima di utilizzarlo per prevenire possibili disastri. La versione breve è che se nessun file condivide il nome di base del tuo file Rnw, stai bene.
Aaron - Ripristina Monica

2) A mio avviso, dover fare attenzione in questo modo è una buona cosa, e talvolta compilerà il mio documento Sweave con lo scopo preciso in mente, cioè per assicurarmi di aver correttamente tenuto traccia di tutto il necessario per ricreare il analisi.
Aaron - Ripristina Monica

1
@ naught101: per lunghe analisi, lo eseguo separatamente e salvo i risultati, di solito in un .RDatafile, per l'input dal documento Sweave. Tuttavia, ci sono anche diverse fantastiche opzioni per "memorizzare nella cache" i risultati da un pezzo di codice in modo che non venga eseguito nuovamente.
Aaron - Ripristina Monica il

2

Per strutturare singoli file di codice .R, puoi anche usare strcode , un componente aggiuntivo RStudio creato per inserire separatori di codice (con titoli opzionali) e basato su di essi - ottenere riepiloghi di file di codice. Spiego il suo utilizzo in modo più dettagliato in questo post del blog .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.