【问题标题】:(How) can a package on CRAN import a package not on CRAN?(如何)CRAN 上的包可以导入不在 CRAN 上的包吗?
【发布时间】:2020-01-01 02:25:41
【问题描述】:

Comprehensive R Archive Network (CRAN) 上的包显然可以直接导入 CRAN 上的其他包。

CRAN 上的包也可以导入不是在 CRAN 上的包吗? - 如果不是,我猜选项是:

  • 将另一个包放到 CRAN 上,或者
  • 抽象出必要的部分以直接包含(而不是导入整个包)
  • 其他方法?

我之所以感兴趣,是因为有时将贡献放在单独的包中更有意义,特别是如果贡献可能单独使用或在其他包中使用。

【问题讨论】:

  • 与第二个要点相关---我在 CRAN 上看到过“建议”不在 CRAN 上的包来处理这个问题。如果需要这些包中的功能,作者使用requireNamespace() 在这些附加包不可用时使功能正常失败。

标签: r cran


【解决方案1】:

我不这么认为。

Writing R Extensions 指定您可以在说明文件中包含Additional_repositories 字段。

但是,CRAN Repository Policy 说:

CRAN 包所依赖的包应该可以从主流存储库中获得:如果“建议”或“增强”字段中提到的任何包不是来自此类存储库,则应在“存储库”中指定从何处获取它们描述文件的 Additional_repositories 字段(以逗号分隔的存储库 URL 列表)或用于其他访问方式,在“描述”字段中描述。

  • 这里的“主流”大概是指 CRAN(也许?Bioconductor)(this bioc-devel thread from 2015 表明 CRAN 和 Bioconductor 都是“主流”)
  • 这里的“depends”表示 Imports/LinkingTo/Depends

除了您建议的解决方案之外,我想不出任何解决方案(在 CRAN 上获取包在您的包中包含必要的代码)。

【讨论】:

  • 好奇的“主流存储库”包括 github 或 github 的新(ish)包服务..
  • 我不知道(“主流”不会出现在存储库策略的其他任何地方),但我非常怀疑。您可以询问 CRAN 维护人员,或者(更好地)在 r-package-devel@r-project.org 上发布问题。
  • @user5783745:“存储库”是定义明确的东西,install.packages()update.packages() 可以使用正确设置的 repos 选项来从 -- 下载实际的 realease源代码或二进制文件。这与 github 存储库或其他版本控制的源代码存储库有很大不同。
猜你喜欢
  • 2016-06-28
  • 1970-01-01
  • 2016-01-24
  • 2014-05-01
  • 2011-05-24
  • 2016-07-13
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
相关资源
最近更新 更多