gpt4 book ai didi

r - 如何将变量传递到 R markdown .Rmd 文件中?

转载 作者:行者123 更新时间:2023-12-02 02:13:33 29 4
gpt4 key购买 nike

我正在尝试创建一个通用的 rmarkdown 模板来对数据框进行分析。我希望能够将数据帧传递到 rmarkdown 文件,而不是每次都对其进行硬编码。

下面是我一直在尝试的一个片段。您可以在顶部看到我必须加载数据框(mtcars)。我还手动识别自变量 (ivs) 和因变量 (dvs)。我想将它们作为参数传递。我正在尝试做一个快速但肮脏的 SPSS 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 文件并向其传递参数?或者还有其他方法可以完成我想做的事情吗?

最佳答案

另一种选择是在 rmarkdown::render 函数中使用 params 列出变量,请参阅: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"]
---

然后可以通过列表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

关于r - 如何将变量传递到 R markdown .Rmd 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18929782/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com