如何让 knitr 在 RStudio 中使用相同的 R 会话?

how to make knitr use the same R session in RStudio?

如何让 knitr 在 RStudio 中使用相同的 R 会话?

仅供参考,我正在处理大量数据(R 会话使用 7 GB RAM)并且我不想避免使用 load('data.RData')


更新

Knitr 使用新的 R 会话,而 运行 .Rmd。因此,找不到我所有的 R 对象。这就是为什么我必须使用函数 load('mydata.RData')

谢谢

如果您使用 .Rnw 文件,直接在控制台中键入(假定工作目录是您的文件所在的位置):

knitr::knit("filename.Rnw")
# or 
knitr::knit2pdf("filename.Rnw") 

后面也将filename.tex转换为filename.pdf

对于经典 .Rmd 文件,您可以使用相同的

knitr::knit("filename.Rmd") 
# or 
knitr::knit2html("filname.Rmd")

对于使用 rmarkdown 包的较新工作流程,请使用

rmarkdown::render("filename.Rmd")

这是有效的,因为默认情况下 knitrender 函数将 envir 参数设置为 envir=parent.frame(),这通常是您的 R-Session 的全局环境.

另一方面,通过单击 R-Studio 中的编织按钮调用 knitrender 会使用参数 envir=new.env() 调用这些函数。