把一份会随数据更新的报告交给同事,麻烦往往不在文件本身,而在“还要先装哪些软件包”。Tom Palmer 展示了一种更省事的交付方式:把依赖清单和渲染入口一起写进 render.R。拿到脚本的人运行一个命令,就能准备所需环境并重新生成 Quarto 文档——Quarto 是把文字、代码和结果编译成报告、网页或幻灯片的出版系统。
具体来说,新的 R 包管理器 ir 和 uvr 都支持“自包含脚本”。前者用以 #| 开头的注释列出包,随后执行 ir run render.R;后者把依赖写成 TOML 数组,再用 uvr run render.R。清单既包括文档分析所需的包,也包括 quarto 和 knitr;knitr 负责运行正文里的 R 代码并嵌回结果。脚本主体则调用一次或多次 quarto::quarto_render()。
这对课程材料、多目录项目和自动化管线尤其方便:入口统一后,手工配环境造成的差异会少一些。不过作者也直言,自己很少需要记录软件包的精确版本。因此,这种方案更像轻量交付入口;若任务要求严格复现,材料没有说明它如何固定每个依赖版本。