2014-10-07 10 views
5

AGGIORNAMENTO: Sembra che la mia domanda sia in realtà un duplicato molto vicino a this question e, in base a tale thread, non esiste attualmente una soluzione "facile". Tuttavia, questa domanda ha più di un anno ora, e il tempo potrebbe essere cambiato (si può sperare!).Come scrivere un articolo con dati di riferimento astratti che non sono stati ancora calcolati?

La mia domanda iniziale segue:


sto pensando che ho bisogno di un qualche tipo di meccanismo per riordinare il testo eo R pezzi nel documento mentre viene maglia. Quello che voglio essere in grado di fare è scrivere un documento di stile "article" con un abstract e un sommario all'inizio, prima di entrare in qualsiasi codice R, ma che contiene "forward" - riferimenti alle cose che verranno calcolate nel Codice R.

Così la mia sintesi exec all'inizio potrebbe essere

We found a `r final_correlation/100`% correlation between x and y... 
ma "final_correlation" sarà calcolato alla fine retro del documento, come vado attraverso tutte le fasi della ricerca riproducibile.

In effetti, quando leggo di ricerca riproducibile, vedo spesso commenti che la documentazione può spesso essere presentata meglio fuori dalla sequenza di programmazione.

Credo che in altri contesti di programmazione alfabetica i blocchi possano essere ingarbugliati in un ordine diverso da quello in cui sono stati presentati. Come posso ottenerlo in knitr? O c'è qualche altro flusso di lavoro o schema completamente diverso che potrei adottare per raggiungere il risultato che voglio?

+3

Una possibilità: Separare il trattamento dei dati in un Script R, fonte dello script R all'inizio del documento e tutti i dati sarebbero disponibili. – A5C1D2H2I1M1N2O1R2T1

+0

un'altra opzione è usare 'brew' per pre-elaborare il documento. – baptiste

risposta

1

Non esiste un modo per definire l'ordine per valutare tutti i blocchi di codice in knitr al momento. Un'idea a cui riesco a pensare è quella di scrivere l'abstract alla fine dell'articolo e includerlo all'inizio. Uno schema:

  • article.Rmd
  • abstract.Rmd

In article.Rmd:

Title. 

Author. 

Abstract. 

```{r echo=FALSE, results='asis'} 
if (file.exists('abstract.md')) { 
    cat(readLines('abstract.md'), sep = '\n') 
} else { 
    cat('Abstract not ready yet.') 
} 
``` 

More code chunks. 

```{r} 
x <- 1:10 
y <- rnorm(10) 
final_correlation <- cor(x, y) 
``` 

Body. 

```{r include=FALSE} 
knitr::knit('abstract.Rmd') # generates abstract.md 
``` 

In abstract.Rmd:

We found a `r final_correlation/100`% correlation between x and y... 
+0

Ho capito che questo è un ottimo modo per mantenere il principio DRY nel modo attuale in cui 'knitr' funziona. Speravo in una soluzione a un solo file. E ho la mia risposta per oggi, grazie! – dsz

Problemi correlati