2014-06-28 16 views
6

Chcę dołączyć kod z określonego fragmentu jednego dokumentu obniżenia do drugiego dokumentu oceny. Chcę to zrobić, odwołując się do fragmentu po nazwie (proszę o nr hacky references to line-numbers). Nie chcę uruchamiać całego kodu w dziecku, ponieważ niektóre z nich są dość czasochłonne.Dołącz konkretny fragment z jednego dokumentu obniżki w innym dokumencie.

Oto, co próbowałem. Mamy read_chunk za włączenie zwykłego skryptu R w dokumentacji cennika. Jest run_chunk, ale nie jest jasne, czy można go użyć z zewnętrznymi dokumentami (do tej pory nie miałem szczęścia).

I możemy zrobić this dostać cały Przecena doc uruchomić wewnątrz innego:

```{r child='first.Rmd'} 
``` 

Ale w jaki sposób można uzyskać tylko jeden konkretny fragment z dokumentu dziecka do innego dokumentu? Oto mały przykład:

To test-main.Rmd

```{r pick-up-the-kid, child='test-child.Rmd'} 
``` 

A to test-child.Rmd

Hi, there. I'm a child. 

```{r test-child-1} 
1+1 
dnorm(0) 
``` 

```{r test-child-2} 
2+2 
dnorm(0) 
``` 

Kiedy prowadzimy test-main.Rmd możemy uzyskać to:

Hi, there. I’m a child. 

1+1 
## [1] 2 
dnorm(0) 
## [1] 0.3989 
2+2 
## [1] 4 
dnorm(0) 
## [1] 0.3989 

Jeden sposób, że prawie robi to jest ref.label. Jeśli będziemy edytować test-main.Rmd tak:

```{r pick-up-the-kid, child='test-child.Rmd', ref.label='test-child-2'} 
``` 

Wyjście ma tylko pożądany kawałek, ale jest powielany, co nie jest dobre: ​​

Hi, there. I’m a child. 

2+2 
## [1] 4 
dnorm(0) 
## [1] 0.3989 
2+2 
## [1] 4 
dnorm(0) 
## [1] 0.3989 

Jeden solution do powielania jest użycie eval = FALSE, echo = FALSE w Opcje chunk w dokumencie dziecko:

```{r test-child-2, eval = FALSE, echo = FALSE} 
2+2 
dnorm(0) 
``` 

co daje pożądanego rezultatu:

Ale nie jest to wygodne, aby zmienić fragment w dokumencie podrzędnym, ponieważ ten fragment jest potrzebny innym fragmentom w dokumencie doc, a ja nie chcę go zmieniać za pomocą kilku fragmentów w dokumencie doc czas, który prowadzę główny dokument, to nie jest dobre dla odtwarzalności.

Jak mogę uzyskać tylko kawałek test-child-2 z test-child.Rmd do test-main.Rmd przez odniesienie do nazwy bryłkach (bez duplikatów lub błahy z opcji fragmentach)?

Szukam funkcji, która mogłaby być nazwana child_chunk, gdzie mogę podać nazwę dokumentu i nazwę kawałka dziecka i zastosować do niego opcje porcji w dokumencie głównym, które są niezależne od opcji porcji w dokumencie podrzędnym.

Czy jest to jedyne rozwiązanie umożliwiające przeniesienie kodu do plików skryptowych R i udostępnienie ich między dwoma dokumentami cennika?

Odpowiedz

4

chciałbym spróbować purl -ing oryginalny dokument podrzędny, a następnie czyta fragment z pliku kod splot, który następnie można następnie usunąć.

Oto test-main.Rmd

```{r echo=FALSE} 
invisible(purl("test-child.Rmd", output="temp", quiet=TRUE)) 
read_chunk("temp") 
``` 

```{r ref.label='test_child_2'} 
``` 

```{r echo=FALSE} 
unlink("temp") 
``` 

zmodyfikowałem swój test-child.Rmd używać różnych etykiet, ponieważ twój nie działa na moim komputerze:

Cześć, tam. Jestem dzieckiem.

```{r test_child_1} 
1+1 
dnorm(0) 
``` 

```{r test_child_2} 
2+2 
dnorm(0) 
``` 

Wyjście knit('test-main.Rmd') jest następujący:

```r 
2+2 
``` 


``` 
## [1] 4 
``` 

```r 
dnorm(0) 
``` 

``` 
## [1] 0.3989 
``` 
Powiązane problemy