2013-04-05 8 views
8

Dla celów dokumentacyjnych, chcę trochę kodu dla wykresu w wynikach HTML, ale nie na wykresie. Później muszę zadzwonić do kodu kreślarskiego i dodać coś do fabuły, ale widzę tylko dodatkowy kod. Próbowałem to:Jak dodawać elementy do wykresu za pomocą kawałka dzianiny bez oryginalnego wyniku przecinania?

```{r non.finished.plotting, eval=FALSE} 
    plot(1,type="n") 
``` 
Some explanatory text here in the output: 
"This produces an empty plot, and we could now add some points to it manually." 

```{r add.layer, fig.width=5, fig.height=5} 
<<non.finished.plotting, echo=FALSE>> 
points(x=rnorm(100,1,0.1), y=rnorm(100,0.8,0.1)) 

``` 

Znalazłem echo-notację w Yihui's, ale kiedy to dzianina, otrzymuję komunikat o błędzie na wyjściu.

## Error: plot.new has not been called yet 

Próbowałem też błahy z chunk options, ale nie mogłem znaleźć kombinację, która robi to, co chcę. (Niestety, jest to bardzo proste, ale nie mogę znaleźć coś całkiem podobny do tego przykładu.)

+0

Chyba trzeba dodać 'eval = FALSE do drugiego fragmentu, jak również. Wygląda na to, że pierwsza porcja nie jest oceniana * tzn. * 'Plot' nigdy nie jest wywoływana, ale druga porcja jest, powodując błąd, ponieważ nie można rozpocząć nowego wykresu przez wywołanie' points'. – Backlin

+0

Dzięki @Backlin, ale pozwól mi wyjaśnić. Chcę wywołać fabułę w drugiej części, ale nie w pierwszej części. Jedyne, co wymyśliłem, to wprowadzenie trzeciego fragmentu wywołującego pierwszy i dodawanie punktów z wartością eval = TRUE, echo = FALSE. Ale czy to naprawdę potrzebne? –

+0

Aha, i zapomniałem wspomnieć: jeśli nie używasz echo = FALSE, ale po prostu wywołaj porcję, zarówno kod, jak i fabuła są na wyjściu. –

Odpowiedz

11

referencje Chunk w <<>> nie przestrzegają opcji bryłki, więc <<non.finished.plotting, echo=FALSE>> nie będzie działać. Co można zrobić, to przenieść opcję klocek echo z powrotem do głównego fragmentu tak:

```{r add.layer, fig.width=5, fig.height=5, echo=-1} 
<<non.finished.plotting>> 
points(x=rnorm(100,1,0.1), y=rnorm(100,0.8,0.1)) 
``` 

echo=-1 środki nie echo pierwszego wyrazu (jak documented). To jest chyba to, co chcesz:

screen shot of knitr output

+0

Wielkie dzięki, Yihui. Dokładnie to, czego szukałem, i całkowicie przeoczyłem to w dokumencie. Świetnie, to naprawdę pomaga uporządkować kod. –

+0

@WilliamBligh można oznaczyć jako odpowiedź, jeśli uważasz, że jest to poprawna odpowiedź –

+0

dzięki za przypomnienie mi! –

Powiązane problemy