r - Markdown 与knitr 在一次编译中运行两组代码

标签 r markdown knitr

我有一个问题。

我正在使用 R studio Markdown 构建一个 html 文件。

在我的markdown文件中,我希望将R代码分成两段,分别运行。

```{r  cache=TRUE, echo=TRUE, include=FALSE}
require(maps)

```

现在我要运行另一组代码。

```{r}
japan <- map("world", "japan", plot=T)
```

但是,第二个代码无法运行,因为 R 没有加载 map 包。

有没有办法保存第一个代码结果并将其传递给第二个代码?

最佳答案

为什么在第一个 block 上使用cache=TRUE?这就是问题所在。当您打开缓存时,请记住下次编译文档时将跳过该 block ,这意味着 require(maps) 将不会被执行。

knitr 确实尝试保留副作用,例如加载包 ( see documentation ),但这仅适用于缓存 block 。如果您在缓存 block 中加载包,但在未缓存 block 中使用它,则它将不起作用。综上所述,

  1. 要么不使用缓存
  2. 或一致使用缓存

缓存非常棘手。在投入生产之前,请务必仔细阅读文档。

关于r - Markdown 与knitr 在一次编译中运行两组代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17959441/

相关文章:

r - 在 R 中创建函数边界

editor - 带表格的 Markdown 编辑器

r - 如何在 R Markdown 中突出显示内联 R 代码?

R-markdown block 内单行的 HTML 代码

r - 将 R 与 NodeJS 集成

r - 使用 getSymbols() 最快和/或更好的方法是什么?将每个股权分开还是全部合并?

r - 如何将 "anti-join"用于 sf 对象 - 不在多边形内的子集点

python - 在 Go 中将 C 和 Python 代码串在一起?

html - 使用 Pandoc 从 HTML META 标签创建 YAML 元数据

r - 如何在 R Markdown 笔记本中显示 kable kableExtra 表,而不仅仅是在针织文档中?