如何在RMarkdown中使用预加载变量且无需重新执行脚本
如何让RMarkdown复用已执行脚本的变量且避免重复运行耗时脚本
针对你的需求,有三种实用方案可以解决:
1. 直接用当前活跃R会话编织文档
如果你已经在当前R会话中运行完Reporte MKP.R脚本,别用RStudio的"Knit"按钮(它会启动全新的R会话),直接在控制台调用rmarkdown::render()函数编织你的RMarkdown文件:
# 确保已在当前会话执行完Reporte MKP.R source("Reporte MKP.R") # 编织目标RMarkdown文档 rmarkdown::render("你的报告文件名.Rmd")
这种方式会直接复用当前会话全局环境里的所有变量、数据框,完全不用重新执行脚本。
2. 启用RMarkdown的缓存功能
如果需要偶尔更新脚本结果,但不想每次编织都跑全量代码,可以给加载脚本的代码块开启缓存:
source("Reporte MKP.R")
- 只有当
Reporte MKP.R的内容发生修改时,缓存才会重新生成;如果只是修改RMarkdown里的报告内容,会直接复用之前缓存的变量和数据框。 cache.path参数可以指定缓存文件的存放目录,方便管理。
3. 提前保存环境,编织时直接加载
可以先把运行完脚本后的环境保存成RData文件,之后在RMarkdown中直接加载:
第一步:保存环境
在运行完Reporte MKP.R的会话中执行:
save.image("mkp_processed_env.RData")
第二步:在RMarkdown中加载
在setup代码块里加入加载命令:
load("mkp_processed_env.RData")
这种方式即使关闭R会话后重新打开,也能直接加载已处理好的变量和数据框,不用再跑一遍耗时的脚本。
内容的提问来源于stack exchange,提问作者Francisco Augusto Varela Aguir
相关产品推荐
相关产品推荐

