如何将已有R环境数据导入.rmd文件并避免重复运行代码?
避免Rmd重复运行耗时代码的几种实用方案
根据你的场景,推荐以下几种直接可行的方法:
1. 直接调用R环境中已有的对象
如果耗时代码的输出已经存在于当前R会话环境里,只需调整代码块的执行设置:
- 将原耗时代码块标记为不执行,添加
eval=FALSE参数:# 已在外部运行完成的耗时代码 # time_consuming_output <- long_running_calculation() - 在需要展示结果的代码块中,直接调用环境中已存在的变量:
# 直接复用已有结果 print(time_consuming_output)
2. 启用代码块缓存功能
如果还未运行代码,或者希望Rmd自动管理结果缓存,给耗时代码块添加cache=TRUE参数:
```{r, cache=TRUE} # 耗时的计算代码 time_consuming_output <- long_running_calculation()
第一次运行后,结果会被缓存到当前目录的`_cache`文件夹中,只要代码本身没有修改,后续渲染报告时会直接复用缓存结果,不再重复执行耗时代码。 ## 3. 提前保存结果并在Rmd中加载 先将运行好的结果保存到本地文件,在Rmd中加载该文件替代运行原代码: - 在外部R会话中运行耗时代码后保存结果: ```r save(time_consuming_output, file = "report_result.RData")
- 在Rmd的开头加载保存的结果:
load("report_result.RData")
之后在报告的任意位置直接使用time_consuming_output即可,无需重新执行耗时计算。
内容的提问来源于stack exchange,提问作者Ludwig Gershwin
相关产品推荐
相关产品推荐

