我有一个问题。
我正在使用 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 中使用它,则它将不起作用。综上所述,
- 要么不使用缓存
- 或一致使用缓存
缓存非常棘手。在投入生产之前,请务必仔细阅读文档。
关于r - Markdown 与knitr 在一次编译中运行两组代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17959441/