我是knitr的新手,特别是read_chunk
的能力。我一直在研究是否有可能将参数传递给代码块,但还没有找到/理解正确的资源。这是可能的,如果是这样的话?
我的外部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>>
```
答案 0 :(得分:2)
如果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文件。