0

我正在使用 cachesweave,但我不认为我明白一切是如何工作的。我试图将代码分成模拟块和绘图块,但是有些代码很长并且是在我开始 sweave 文档之前编写的,所以我改用类似的东西

 <<foo,cache=TRUE>>
 source("mainScript.R")
 @
 <<plot,fig=TRUE>>
 a<- print(str(F1))
 plot(F1)
 @

事情是 mainScript.R 是有点复杂的模拟代码,包括绘图函数等。我在 cacheSweave 小插图中读过“cacheSweave 不缓存副作用”并且没有缓存绘图,所以我想知道 mainScript.R 中的绘图函数是否影响表达式的评估方式?

这可能是一个显而易见的问题。假设我在上述两个之后还有另一个块。“foo”和“plot”中表达式的所有结果都可以在这个新块中使用,对吧?例如,

 <<post-chunk>>
 print(a)
 print(str(F1))
 @
4

1 回答 1

3

有关完整说明,请参阅Wikipedia。R 中的一些常见副作用包括:print()对象、绘图、写入文件和加载包。

cacheSweave软件包仅使您可以跳过计算,并且您必须失去所有副作用。正如 Dason 评论的那样,该knitr包在缓存方面更加自然——您在未缓存的块中看到的内容将在缓存的块中看到。副作用的缓存knitr其手册和网站中的缓存页面中进行了说明。

顺便说一句,knitr保持与 Sweave 和 cacheSweave 的兼容性,所以希望您不需要为过渡做任何事情;只是打电话library(knitr); knit('file.Rnw')

于 2012-05-23T01:15:24.670 回答