我有一个问题。
我正在使用R studio Markdown构建一个html文件。
在我的降价文件中,我希望将R代码分成两段,并分别运行。
```{r cache=TRUE, echo=TRUE, include=FALSE}
require(maps)
```
现在我将运行另一组代码。
```{r}
japan <- map("world", "japan", plot=T)
```
但是,第二个代码无法运行,因为R没有加载地图包。
有没有办法保存第一个代码结果并将其传递给第二个代码?
答案 0 :(得分:2)
为什么在第一个块上使用cache=TRUE
?这就是问题的根源所在。当您打开缓存时,请记住下次编译文档时将跳过该块,这意味着require(maps)
将不会被执行。
knitr
会尝试保留副作用,例如加载包(see documentation),但这仅适用于缓存的块。如果您在缓存的块中加载一个包,但在未缓存的块中使用它,它将无法工作。总结一下,
缓存非常棘手。在投入生产之前,请务必仔细阅读文档。