2

我有个问题。

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

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

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

```

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

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

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

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

4

1 回答 1

2

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

knitr确实尝试保留诸如加载包之类的副作用(请参阅文档),但这仅适用于缓存的块。如果您在缓存块中加载包,但在未缓存块中使用它,则它将无法工作。总结一下,

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

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

于 2013-07-31T06:09:25.003 回答