可以在knitr中将参数传递给code_chunk吗?

时间:2015-09-13 18:28:19

标签: r knitr

我是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>> 
```

1 个答案:

答案 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文件。