gpt4 book ai didi

r - 在 CRAN 包中包含非 CRAN 包

转载 作者:行者123 更新时间:2023-12-04 01:15:02 24 4
gpt4 key购买 nike

这个问题很简单。第一的:

  • 是否可以在 CRAN 包中包含非 CRAN(或生物导体或 omega hat)包,并在示例中实际使用该包中的工具。
  • 如果是,如何设置 DESCRIPTION文件等使其合法并通过 CRAN 检查?

  • 具体来说,我在问 openNLPmodels.en 曾经是一个 CRAN 包。它非常有用,并且希望包含其中的功能。我可以做一个工作而不是实际使用 openNLPmodels.en 在示例中或为它创建单元测试,并在函数被使用时安装它(类似于 性别 包如何安装它需要的数据集)但我更喜欢一种允许我运行检查、文本、示例。

    这是下载和安装 的方式openNLPmodels.en
    install.packages(
    "http://datacube.wu.ac.at/src/contrib/openNLPmodels.en_1.5-1.tar.gz",
    repos=NULL,
    type="source"
    )

    最佳答案

    现有的答案很好,但没有详细解释整个过程,所以发布这个。

    Is it possible to include a non-CRAN (or bioconductor, or omega hat) package in a CRAN package and actually use tools from that package in examples.


    是的,有可能。此类非 CRAN 的任何使用(包代码、示例、测试、小插曲)都必须像 Suggests 中的任何其他包一样进行转义,理想情况下使用
    if (requireNamespace("non.cran.pkg", quietly=TRUE)) {
    non.cran.pkg::fun()
    } else {
    cat("skipping functionality due to missing Suggested dependency")
    }

    If yes how does one set up the DESCRIPTION file etc. to make it legit and pass CRAN checks?


    您需要使用 Additional_repositories描述文件中的字段。该字段中提供的位置必须包含预期目录结构, PACKAGES文件在适当的目录, PACKAGES文件必须列出非 CRAN 包。

    现在转到 openNLPmodels.en 的特定示例包裹。
    根据 您下载和安装的方式此软件包将无法将其用作依赖项并传递给 CRAN。 openNLPmodels.en必须以 R 存储库预期的结构发布。否则,您没有有效的位置可放入 Additional_repositories field 。
    您可以做的是自己下载非 CRAN 包并将其发布到您的 R 存储库中,然后在 Additional_repositories 中使用该位置。 CRAN 包中的字段。
    以下是如何执行此操作的示例:
    dir.create("src/contrib", recursive=TRUE)
    download.file("http://datacube.wu.ac.at/src/contrib/openNLPmodels.en_1.5-1.tar.gz", "src/contrib/openNLPmodels.en_1.5-1.tar.gz")
    tools::write_PACKAGES("src/contrib")
    我们只是将包源放在预期目录 src/contrib其余的由 write_PACKAGES 处理得很好功能。为确保正确创建存储库,您可以列出该存储库中可用的包:
    available.packages(repos=file.path("file:/",getwd()))
    它应该在那里列出您的非 CRAN 包。
    然后在 R 存储库中发布非 CRAN 包,您应该将存储库的位置放入 Additional_repositories您的 CRAN 包的字段。在这种情况下,位置将是 file.path("file:/",getwd()) 返回的位置表达。
    请注意,它使用本地计算机上的位置,您可能希望将其放到网上,以便任何检查您的 CRAN 包的机器都可以访问该 URL,包括对 CRAN 本身的检查。为此,只需移动您的 src目录到一个公共(public)目录,该目录将在网上某处托管并使用该服务器的位置。

    现在再次查看您的非 CRAN 包,我们可以看到它的 url 中有 src/contrib,因此我们可以假设它已经存在适当的 R 存储库,我们不必创建和发布新的。
    因此,您的安装说明可能看起来像
    install.packages(
    "openNLPmodels.en",
    repos="http://datacube.wu.ac.at",
    type="source"
    )
    然后,您的 CRAN 包所需要做的就是使用可用的现有存储库
    Additional_repositories http://datacube.wu.ac.at

    关于r - 在 CRAN 包中包含非 CRAN 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33335321/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com