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

设置_R_CHECK_DEPENDS_ONLY_=true时R包CRAN提交测试与vignette报错求助

解决CRAN包提交中_R_CHECK_DEPENDS_ONLY_导致的Suggests包依赖问题

问题背景

向CRAN重新提交R包RaMS时被退回,原因是测试执行(test_check("RaMS"))和vignette重建过程中,无法找到Suggests字段中列出的tidyverse、rmarkdown等包。本地复现确认是环境变量_R_CHECK_DEPENDS_ONLY_设为true导致的,将其设为false或移除则无报错。尽管文档说明该变量仅检查Depends/Imports中的包,但R 4.2.0后其行为扩展到了示例、测试和vignette,CRAN部分检查环境可能默认开启该变量,导致依赖Suggests包的测试和构建环节报错。

解决方法

以下几种方式可解决该问题:

  • 明确告知CRAN检查需要Suggests依赖:在DESCRIPTION文件中添加Config/Needs/Check: Suggests配置项。这个设置会强制CRAN在执行检查时安装Suggests字段中的所有包,无论_R_CHECK_DEPENDS_ONLY_的取值如何,从根源上避免依赖缺失问题。
  • 给测试添加条件跳过逻辑:在依赖Suggests包的测试代码开头,添加testthat::skip_if_not_installed("包名")语句。比如需要tidyverse的测试,开头加testthat::skip_if_not_installed("tidyverse"),这样当环境未安装该包时,测试会自动跳过而非报错。
  • 调整vignette的执行逻辑:在vignette的R代码块开头,添加包存在性检查。例如使用eval = requireNamespace("tidyverse", quietly = TRUE)作为代码块选项,确保当依赖包未安装时不执行对应代码;或者在vignette开头用if (!requireNamespace("rmarkdown", quietly = TRUE)) { knitr::knit_exit() }提前终止构建,避免报错。
  • 检查包内配置是否触发变量:排查包的.Rbuildignore、Makevars等配置文件,确认是否有意外设置_R_CHECK_DEPENDS_ONLY_=true的逻辑,若有则移除相关配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:57:43