【问题标题】:How can I suppress and capture knitr chunk ouput?如何抑制和捕获 knitr 块输出?
【发布时间】:2017-01-27 15:21:27
【问题描述】:

knitr 文档中,我正在调用一个外部代码块,该代码块生成一个类似于以下内容的ggplot2 对象:

# file.R
# ---- create_plot ----
library(ggplot2)
data(mtcars)
gg <- ggplot(mtcars, aes(mpg, cyl)) + geom_point()
gg

在我的文档中(特别是 Flexdashboard Rmd):

# dashboard.Rmd
```{r setup}
knitr::read_chunk("plot.R")
```

```{r create_plot}
```

我想调用这个块并禁止打印gg 对象,允许我对对象进行一些调整(标题、颜色等)并稍后在我的文档中显示该图。我在调用块时尝试过results='hide',但没有成功。我想要的文件是这样的:

# dashboard.Rmd
```{r setup}
knitr::read_chunk("plot.R")
```

```{r create_plot, results='hide'}
```

```{r display_plot}
gg <- gg + labs(title = "Custom title")
gg
```

如果不编辑外部块以省略最后的gg 调用,这是否可行?

【问题讨论】:

  • 你试过include = FALSE作为一个块选项吗?
  • 您是否尝试过从块中删除gg 语句,使其创建情节,而不是创建和打印?
  • 这就是诀窍!谢谢@RyanMorton!请您提交作为答案,以便我接受并信任您吗?
  • 如果您创建一个函数来使用 ggplot 定义对象,那么您可以在绘图之前的任何时候在 knitr 文档中创建参数并缓存它们然后将它们作为参数提供给您自己的 ggplotting 函数,然后告诉它用你当前的变量随意绘制创建的对象。
  • @DavidF.Severski,当然!谢谢

标签: r ggplot2 knitr


【解决方案1】:

您需要在块选项中包含 = FALSE。这样,代码将运行但不包含在内。当我使用 source() 运行批处理代码时,我经常这样做。无论如何,试试这个:

```{r display_plot, include = FALSE}
gg <- gg + labs(title = "Custom title")
gg
```

【讨论】:

    猜你喜欢
    • 2017-05-01
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    • 2014-10-17
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多