如何在R脚本f2.R中执行外部Rmd文件f1.Rmd的所有R代码块并保留变量?
实现方法
要在f2.R中执行f1.Rmd的所有R代码块并保留变量,直接用knitr包的purl函数即可,步骤如下:
- 先确保环境中安装了
knitr包,未安装则先完成安装 - 提取
f1.Rmd中的代码块并在当前会话执行
具体在f2.R中写入以下代码:
# 检查并安装knitr包 if (!requireNamespace("knitr", quietly = TRUE)) { install.packages("knitr") } library(knitr) # 提取f1.Rmd的代码块并在当前会话执行,变量保留 temp_script <- purl("f1.Rmd", output = tempfile(), quiet = TRUE) source(temp_script, local = TRUE)
说明
purl函数会自动提取f1.Rmd中所有**未设置eval=FALSE**的R代码块,生成临时R脚本,和RStudio"运行以下所有代码块"的逻辑完全一致source(temp_script, local = TRUE)确保代码在当前R会话的环境中执行,所有生成的变量都会保留在全局环境(或当前调用环境)中
内容的提问来源于stack exchange,提问作者Gilles
相关产品推荐
相关产品推荐

