data munging场景下,能否执行.Rmd文件且不生成报告或.md文件?
解决方案:执行.Rmd文件但不生成输出文件
当然有办法实现啦!你可以通过给knitr::knit()设置特定参数,让它只执行.Rmd里的代码,完全不生成任何报告或.md文件,刚好适配你的Makefile场景。
最简洁的方法
直接在命令里给knitr::knit()添加output = NULL参数:
Rscript -e "knitr::knit('file.Rmd', output = NULL)"
这个命令会逐块执行.Rmd文件里的所有R代码,就像你运行普通R脚本一样,但不会生成任何输出文件——完美匹配你的需求!
另一种可选方法(适合需要临时脚本的场景)
如果你想先把.Rmd里的代码提取成独立的R脚本再执行,之后自动删除临时脚本,可以用下面的命令:
Rscript -e "temp_script <- knitr::purl('file.Rmd', output = tempfile()); source(temp_script); file.remove(temp_script)"
不过这种方法会生成一个临时文件(执行后自动删除),相比第一种方法稍显繁琐,一般推荐第一种就足够了。
补充说明
knitr::knit(output = NULL)会跳过输出文件的写入步骤,只专注于执行代码块knitr::purl()的作用是提取.Rmd中的所有R代码到脚本文件,配合临时文件和自动删除,也能达到“执行代码但不留输出”的效果
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

