可以在 knitr 中将参数传递给 code_chunk 吗?
Possible to pass argument to code_chunk in knitr?
我对 knitr 很陌生,尤其是 read_chunk
的能力。我一直在研究是否有可能将参数传递给代码块,但还没有 found/understood 合适的资源。这可能吗?如果可能的话如何?
我的外部 R 脚本代码如下所示
## @knitr plotX
plot.1 <- ggplot(df, aes(x = year, y = values, colour = names)) +
geom_line(aes(group = names)) +
scale_y_continuous(labels = scales::comma) +
scale_colour_brewer(palette = "Paired") +
ylab("Expenses in SEK") +
labs(colour = "Household Group") +
theme_classic()
plot.list <- list("per housegroup" = plot.1, df)
return(plot.list)
## -----
在我的 .Rmd
文件中,我能否以某种方式在参数中传递 df
参数?
比如
```{r}
knitr::read_chunk('document.R')
<<plotX, argument df = object x>>
```
如果您在 document.R 中的代码使用名为 df
的变量,则只需将其设置在您使用外部代码的块之前。例如:
document.R
# ---- my-chunk ----
plot(df)
test.Rmd
```{r cache=FALSE}
# this reads the code (but does not evaluate yet):
knitr::read_chunk('document.R')
```
```{r}
# assign df
df <- iris
```
```{r my-chunk}
```
请注意,最后一个块名称与 document.r
中的代码段标签匹配
另见 http://yihui.name/knitr/demo/externalization/
更新
正如@user2706569 评论的那样:一种更简洁的方法是将绘图代码包装在一个函数中,而只是 source
document.R 文件。
我对 knitr 很陌生,尤其是 read_chunk
的能力。我一直在研究是否有可能将参数传递给代码块,但还没有 found/understood 合适的资源。这可能吗?如果可能的话如何?
我的外部 R 脚本代码如下所示
## @knitr plotX
plot.1 <- ggplot(df, aes(x = year, y = values, colour = names)) +
geom_line(aes(group = names)) +
scale_y_continuous(labels = scales::comma) +
scale_colour_brewer(palette = "Paired") +
ylab("Expenses in SEK") +
labs(colour = "Household Group") +
theme_classic()
plot.list <- list("per housegroup" = plot.1, df)
return(plot.list)
## -----
在我的 .Rmd
文件中,我能否以某种方式在参数中传递 df
参数?
比如
```{r}
knitr::read_chunk('document.R')
<<plotX, argument df = object x>>
```
如果您在 document.R 中的代码使用名为 df
的变量,则只需将其设置在您使用外部代码的块之前。例如:
document.R
# ---- my-chunk ----
plot(df)
test.Rmd
```{r cache=FALSE}
# this reads the code (but does not evaluate yet):
knitr::read_chunk('document.R')
```
```{r}
# assign df
df <- iris
```
```{r my-chunk}
```
请注意,最后一个块名称与 document.r
中的代码段标签匹配另见 http://yihui.name/knitr/demo/externalization/
更新
正如@user2706569 评论的那样:一种更简洁的方法是将绘图代码包装在一个函数中,而只是 source
document.R 文件。