我正在编写一个与Sweave一起使用的软件包,并希望能够从全局环境中对Sweave调用进行沙盒化。这就是我认为它应该起作用但不起作用的方式:
sweaveEnv <- new.env()
eval(Sweave('myDocument.Rnw'), envir=sweaveEnv)
理想情况下,我希望保存该环境以供以后调试。
save(sweaveEnv, file='mySweaveEnv.Rda')
答案 0 :(得分:3)
您只需启动一个新的R流程:
system("Rscript -e 'Sweave(\"test.Rnw\");save.image(file=\"mySweaveEnv.Rda\")'")
答案 1 :(得分:3)
如果您的主要目的是在该环境中保存对象,则可以将knitr
包与块选项cache=TRUE
一起使用,在这种情况下,块中的所有对象都保存在文件中,你可以稍后将它们加载到R中进行调试; knitr
将分别为缓存目录下的块创建.rdx
和.rdb
文件,您可以调用lazyLoad()
将这些数据库中的对象加载到R中。
如果您想在评估块的环境中做更多事情,knitr
也有chunk hooks,您可以通过钩子访问环境;所以基本上你可以做任何你想做的事情 - knitr
几乎所有东西都对用户开放。请注意,在启用缓存时,会在不同的空环境中评估每个块。我还没有关于这个主题的例子,所以如果我的描述足够清楚,请告诉我。