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

R包开发疑问:仅在示例/vignette中调用的包应放Imports还是Suggests?

解决R包示例/vignette依赖STexampleData的问题
  • 首先明确:你的场景下不需要把STexampleData放在Imports里,更不用声明@import,正确的做法是把它移到Suggests字段,同时对示例代码做简单适配。

具体操作步骤:

  1. 修改DESCRIPTION文件:把STexampleData从Imports移到Suggests,这样它就变成可选依赖,不会强制要求用户安装才能用你的包。
  2. 适配@examples代码:因为示例是可选运行的,要加个条件判断,避免没装依赖时报错:
if (requireNamespace("STexampleData", quietly = TRUE)) {
  library(STexampleData)
  spe <- Visium_humanDLPFC()
  # 这里写你的后续示例逻辑
}
  1. 如果涉及vignette:只要Suggests里有STexampleData,vignette里可以正常用library(STexampleData),跑R CMD check时如果要执行vignette内容,记得加上--install-args=--build参数(或者用devtools的check(vignettes = TRUE)),会自动安装Suggests里的依赖。

为什么之前报错?

你把它放在Imports里,R就默认它是包运行必需的依赖,这时候必须在NAMESPACE里通过@import或@importFrom声明导入,否则check会报错。但你的场景只是用在示例和vignette,完全没必要设为强制依赖,用Suggests才是符合CRAN规范的做法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:55:58