2015-10-21 15 views
26

に私はこのようなRマークダウンドキュメントを持っています。これを仮定したもの:ループRマークダウン

for i in length(somelist) { 
    output paste("The following graph shows a histogram of somelist[[" , i, "]]") 
    ```{r} 
    hist(somelist[[i]]) 
    ``` 

これは可能ですか?

PS:データフレームを超えるプログラムを作成し、各列(ヒストグラム、表、ボックスプロットなど)に適切なサマリーを自動的に生成することを計画します。このプログラムを使用して、最初のデータのデータを見るときに行う探索的分析を含むマークダウン文書を自動的に生成することができます。

+0

1つのチャンク内に複数のプロットを生成することができます。複数のプロットを生成する1つのチャンク内にループを置くのではなく、ソリューションの論理的根拠について説明してください。 – akhmed

+1

私は同じ質問のためにここに来ました。私の根拠は、RMarkdownレポートのいくつかのバージョンを作成することです。レポートは私の生徒に与えられた演習の答えになりますが、それぞれが異なるデータを扱うので、すべての生徒のためにレポートをパーソナライズしたいと思います。受け入れられた答えは有用かもしれませんが、実際にループ内にマークダウンを入れ、キャプション、数式、書式などのマークダウン機能を使用する方がよいでしょう。 – Pere

答えて

26

お望みのものにすることができますか?

--- 
title: "Untitled" 
author: "Author" 
output: html_document 
--- 


```{r, results='asis'} 
for (i in 1:2){ 
cat('\n') 
cat("#This is a heading for ", i, "\n") 
hist(cars[,i]) 
cat('\n') 
} 
``` 

この回答は、hereより多かれ少なかれ盗まれました。

+0

Rのファイルを最初に縫い合わせることなく、これをマークダウンで行うことができるということは、(少なくとも私にとっては)他の答えからは分かりませんでした。私はちょうどRMarkdownに固執することができます。 –

+0

私にとっては、両方のグラフの前に2つの見出しが表示されます。 – Nova

+0

このコードを現在のパッケージのバージョンに戻します。私のために、それはまだ動作します。何らかの方法でサンプルコードを変更しましたか? – Alex

1

すでに説明したように、ループはコードチャンク内にある必要があります。ヒストグラムにタイトルを追加するのではなく、それぞれのヘッダーとしてテキストの行を追加する方が簡単かもしれません。あなたが複数のレポートを作成したい場合

```{r} 
    for i in length(somelist) { 
     title <- paste("The following graph shows a histogram of somelist[[" , i, "]]") 
     hist(somelist[[i]], main=title) 
    } 
``` 

しかし、その後もレンダリングコールがスクリップの中から作られたときにそれはそうthis example.
へのリンク、環境変数を持っているthis thread.

をチェックしてくださいRmdファイルに渡すことができます。

だから、代替は、あなたのRスクリプトを持っているかもしれません:

for i in length(somelist) { 
    rmarkdown::render('./hist_.Rmd', # file 2 
       output_file = paste("hist", i, ".html", sep=''), 
       output_dir = './outputs/') 
} 

そしてあなたのRMDチャンクは次のようになります。

```{r} 
    hist(i) 
``` 

免責事項:私はこれをテストしていません。

関連する問題