2014-10-07 11 views
5

AKTUALIZACJA: Wydaje się, że moje pytanie jest bardzo bliskie duplikatem this question i zgodnie z tym wątkiem nie ma obecnie "łatwego" rozwiązania. Pytanie to ma teraz ponad rok, a czas mógł się zmienić (można mieć nadzieję!).Jak napisać artykuł z abstrakcyjnymi danymi odniesienia, które nie zostały jeszcze obliczone?

Moje oryginalne pytanie następująco:


myślę, że potrzebuję jakiegoś mechanizmu ponownego zamówienie tekst i czy R kawałki w dokumencie, jak to jest na drutach. Chciałbym móc napisać dokument w stylu "artykułu" z streszczeniem i streszczeniem na początku, zanim przejdę do dowolnego kodu R, ale zawiera on "forward" - odnośniki do rzeczy, które będą obliczane w R kod.

Moje podsumowanie na początku może być

We found a `r final_correlation/100`% correlation between x and y... 
, ale "końcowy_correlation" zostanie obliczony na końcu dokumentu, gdy przechodzę przez wszystkie etapy powtarzalnych badań.

Rzeczywiście, kiedy czytam o powtarzalnych badaniach, często widzę komentarze, że dokumentacja często może być lepiej zaprezentowana poza sekwencją programowania.

Wierzę, że w innych programach do pisania piśmiennictwa kawałki mogą być splątane w innej kolejności od tej, w której zostały przedstawione. Jak mogę to osiągnąć w knitr? Czy istnieje inny całkowicie inny proces lub schemat pracy, który mógłbym przyjąć, aby osiągnąć pożądany rezultat?

+3

jedna możliwość: Oddzielić przetwarzania danych w Skrypt R, źródło skryptu R na początku dokumentu, a wszystkie dane będą dostępne dla ciebie. – A5C1D2H2I1M1N2O1R2T1

+0

Inną opcją jest użycie "naparu" do wstępnego przetworzenia dokumentu. – baptiste

Odpowiedz

1

Nie ma sposobu, aby zdefiniować porządek do oceny wszystkich fragmentów kodu w dzianiu w tej chwili. Jedną z idei, o której mogę pomyśleć, jest napisanie streszczenia na końcu artykułu i uwzględnienie go na początku. Zarys:

  • article.Rmd
  • abstract.Rmd

W 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 
``` 

W abstract.Rmd:

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

Rozumiem, że jest to świetny sposób na zachowanie zasady DRY w aktualny sposób, w jaki działa 'knitr'. Miałem nadzieję na rozwiązanie jednoplikowe. I mam odpowiedź na dzisiaj, dziękuję! – dsz

Powiązane problemy