12

データ フレームの分析を行う一般的な rmarkdown テンプレートを作成しようとしています。毎回ハードコーディングするのではなく、データ フレームを rmarkdown ファイルに渡すことができるようにしたいと考えています。

以下は、私が実験してきたスニペットです。上部にデータ フレーム (mtcars) をロードする必要があることがわかります。また、独立変数 (ivs) と従属変数 (dvs) を手動で識別します。これらをパラメータとして渡したいと思います。私は、SPSS Explore 機能の簡単で汚いバージョンを実行しようとしています。"Explore.Rmd":

```{r}
library(ggplot2)
data(mtcars)
mtcars$am <- factor(mtcars$am, levels=c(0,1), labels=c("Manual", "Automatic"))
df <- mtcars
ivs <- c("cyl", "disp", "hp", "drat", "wt", "am", "qsec")
dvs <- c("mpg", "qsec")
```

Histograms
-------------------------------------

```{r}
for (v in union(ivs, dvs))
{
  hist <- ggplot(df, aes_string(x=v)) + geom_histogram()
  print(hist)
}
```

Knitr などを使用して HTML を生成するには、このようなコードが必要です。

myDF <- read.delim("mydata.tab")
ivs <- c("iv1", "iv2", "iv3")
dvs <- c("dv1", "dv2", "dv3")
magic("Explore.Rmd", myDF, ivs, dvs) # <- how do I do this part?

では、静的な rmarkdown ファイルを作成してパラメータを渡すことは可能ですか? または、私がやろうとしていることを達成する別の方法はありますか?

4

3 に答える 3

29

params別のオプションは、rmarkdown::render関数で使用する変数をリストすることです。 http://rmarkdown.rstudio.com/developer_parameterized_reports.htmlを参照してください。

まず、rmarkdown ドキュメントの YAML でパラメータのデフォルト値を宣言して提供します。

---
title: My Document
output: html_document
params:
    df: !r data(mtcars); mtcars
    ivs: ["cyl", "disp", "hp", "drat", "wt", "am", "qsec"]
    dvs: ["mpg", "qsec"]
---

これらは、 list を介してレポート本文でアクセスできますparams

Histograms
-------------------------------------

```{r}
for (v in union(params$ivs, params$dvs))
{
   hist <- ggplot(params$df, aes_string(x=v)) + geom_histogram()
   print(hist)
}
```

最後に、名前付き引数のリストを に渡して、デフォルト値をオーバーライドしますrmarkdown::render

myDF <- read.delim("mydata.tab")
ivs <- c("iv1", "iv2", "iv3")
dvs <- c("dv1", "dv2", "dv3")
rmarkdown::render("MyDocument.Rmd", 
                  params = list(df = myDF, ivs = ivs, dvs = dvs))

YAML はデフォルト値を定義するため、オーバーライドしたいものだけを指定する必要があります。

rmarkdown::render("MyDocument.Rmd", params = list(ivs = c("cyl", "wt")))

は引き続きデータセットを使用しますが、 、、、およびmtcarsのヒストグラムのみをプロットします。cylwtmpgqsec

于 2016-06-21T09:17:56.513 に答える
1

別の方法がhttps://github.com/yihui/knitr/issues/567にあると思います

これらの引数を事前に作成する必要があります。

args='2013'
knit('../my.Rmd','test.html')

詳細を理解したい場合は、引数をknit()参照my.Rmd;してくださいenvir

于 2014-10-03T09:01:06.687 に答える