R包依赖管理:ggplot2与rlang在Suggests中的配置疑问
关于R包可选依赖ggplot2与rlang的两个问题解答
我开发了一个R包,希望在用户已安装ggplot2时可选地调用它——由于ggplot2并非包的核心功能依赖,我已经将其添加至包DESCRIPTION文件的Suggests字段。计划使用的代码片段如下:
if (requireNamespace("ggplot2", quietly = TRUE)) { ggplot2::ggplot(ggplot2::mpg) + ggplot2::geom_bar(ggplot2::aes(x = rlang::.data$drv)) }
技术疑问与解答
疑问1:已知ggplot2本身依赖rlang,即便我在代码中显式使用了rlang,是否仍需将rlang也添加至Suggests字段?
需要。虽然ggplot2依赖rlang,但你的代码直接调用了rlang::.data这个属于rlang的功能,按照CRAN的包规范,所有在代码中显式引用的非核心依赖包,都必须添加到Suggests字段里。这能明确包的依赖关系,避免CRAN检查时出现问题。疑问2:仅通过
requireNamespace("ggplot2", quietly = TRUE)检查ggplot2是否已安装即可,还是需要同时显式检查rlang?
不需要。因为ggplot2在安装时会自动处理它的依赖,只要requireNamespace("ggplot2")返回TRUE,就意味着ggplot2已成功安装,其依赖的rlang必然也存在。额外检查rlang属于冗余操作,完全没必要。
内容的提问来源于stack exchange,提问作者HBat
相关产品推荐
相关产品推荐

