You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用devtools::check()执行R CMD check时非标准文件NOTE的解决方法

解决R CMD check中“顶层目录发现非标准图片文件”的NOTE提示

这是个很常见的问题,别担心!当你编译README.Rmd生成图片时,默认会把它们放在包的顶层目录,但devtools::check()(本质是调用R CMD check)对包根目录的文件有严格规范,这些自动生成的带chunk编号的图片不属于标准包结构的一部分,所以会抛出NOTE。下面是几个实用的解决办法:

方法1:指定图片输出到子目录(推荐)

这是最规范的做法,符合R包的文件结构要求:

  • 在包根目录创建一个子目录,比如man/figures(这是roxygen2官方推荐的存放文档相关图片的位置)
  • 在README.Rmd的开头添加代码块,设置图片输出路径:
    knitr::opts_chunk$set(fig.path = "man/figures/")
    
  • 重新编译README.Rmd,此时生成的图片会自动放到man/figures目录下,顶层不会再出现那些README-unnamed-chunk-*-1.png文件
  • 记得手动删除顶层已经存在的旧图片文件

方法2:用.Rbuildignore忽略这些文件

如果暂时不想调整图片路径,可以通过忽略文件来绕过这个NOTE:

  • 打开包根目录的.Rbuildignore文件(如果没有就新建一个)
  • 添加以下内容,用通配符匹配所有这类自动生成的图片:
    ^README-unnamed-chunk-.*\\.png$
    
  • 保存文件后重新运行devtools::check(),这些图片就会被R CMD check忽略。不过这种方法只是临时规避,不是最优解,因为顶层目录还是会有冗余文件

方法3:用devtools::build_readme()编译README

devtools提供了专门的函数来处理README编译,帮你自动管理图片路径:

  • 直接在R控制台运行:
    devtools::build_readme()
    
  • 这个函数会自动把生成的图片放到man/figures目录,无需手动设置路径,一步解决问题

额外注意

如果用方法1或3,确保README中引用图片的路径是正确的——不过不用担心,knitr在编译时会自动根据fig.path更新markdown里的图片链接,不需要手动修改。

内容的提问来源于stack exchange,提问作者Joshua Rosenberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:44:08