2013-04-05 5 views
8

ドキュメンテーションの目的のために、私はhtml出力でプロットのためのいくつかのコードが必要ですが、プロットではありません。後で、プロットコードを呼び出してプロットに何かを追加する必要がありますが、追加コードを見るだけです。私はこれを試してみました:元のマークダウン出力を持たないknitrチャンクを使用して、要素にプロットを追加する方法はありますか?

```{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)) 

``` 

私はYihui'sでエコー表記を発見したが、私はこれを編むとき、私は出力にエラーメッセージが表示されます。

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

私はまたchunk optionsをいじってみましたが、私は私が何をしたいん組み合わせを見つけることができませんでした。 (申し訳ありませんが、これは非常に基本的ですが、私は非常にこの例のようなものを見つけることができませんでした。<<>>

+0

私はあなたが同様に第二のチャンクに 'のeval = false'をを追加する必要があると思う:これは、あなたが望むものと考えられます。最初のチャンクが評価されていないようです。つまり、 'plot'は呼び出されませんが、' points'を呼び出すことで新しいプロットを開始することはできないので、2番目のチャンクはエラーです。 – Backlin

+0

ありがとう@バックライン、しかし私は明確にしましょう。私は2番目のチャンクでプロットを呼び出したいが、最初のチャンクではない。私が思いついたのは、最初のチャンクを呼び出すことと、eval = TRUE、echo = FALSEの点を追加することだけでした。しかし、これは本当に必要なのでしょうか? –

+0

ああ、私は言及を忘れていました。echo = FALSEを使用せず、チャンクを呼び出すだけであれば、コードとプロットの両方が出力にあります。 –

答えて

11

チャンクの参照がそう<<non.finished.plotting, echo=FALSE>>が動作しません、チャンクのオプションを尊重しません。あなたにできることは、このようにメインの塊に戻すチャンクオプションechoを移動することです:

```{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手段(documentedとして)最初の式をエコーし​​ません。

screen shot of knitr output

+0

ありがとう、Yihui。それは私が探していたもので、私は完全にドキュメントでそれを見落としました。 Brilliant、これは実際にコードを整理するのに役立ちます。 –

+0

@WilliamBlighこれが正しい答えだと思うなら、あなたはそれを答えとしてマークすることができます –

+0

私に思い出させてくれてありがとう! –

関連する問題