【问题标题】:Add RcppParallel requisites to the NAMESPACE of an R package automatically when compiling the package编译包时自动将 RcppParallel 必备项添加到 R 包的 NAMESPACE
【发布时间】:2021-09-03 16:00:35
【问题描述】:

我在自己的 R 包中使用RcppParallel

我知道我需要将Imports: RcppParallel 添加到DESCRIPTION 文件并将importFrom(RcppParallel, RcppParallelLibs) 添加到NAMESPACE 文件。

我目前编译我的 R 包的工作流程是:

  1. 运行Rcpp::compileAttributes()
  2. 运行devtools::document()
  3. 手动将importFrom(RcppParallel, RcppParallelLibs) 添加到NAMESPACE 文件中
  4. 运行devtools::install("MyPackage",quick = T,upgrade="never")

我的问题是我应该对我的 R 包进行哪些更改,以便我可以跳过手动步骤 3?我已经将Imports: RcppParallel 添加到DESCRIPTION 文件中,为什么importFrom(RcppParallel, RcppParallelLibs) 在第2 步之后没有出现在NAMESPACE 文件中?

【问题讨论】:

  • 您可以阅读 roxygen2 包的文档,因为它允许您以编程方式写入 NAMESPACE。从RcppParallel::RcppParallel.package.skeleton() 开始也应该正确设置您 - 因为这就是该功能的用途。或者,如果您不喜欢某些事情,请不要运行devtools::document()

标签: r rcpp r-package rcpparmadillo rcppparallel


【解决方案1】:

在您的一个 C++ 源文件中将其添加到现有条目中

//' @importFrom RcppParallel RcppParallelLibs

当您运行 Rcpp::compileAttributes() 时,它会转移到包含 roxygen2 包的 R 文件中,当以“完整模式”运行时,还重写 NAMESPACE 将添加条目。

【讨论】:

    【解决方案2】:

    为此使用devtools 包。每个要添加到自己的包中的包添加命令use_package

    library(devtools)
    use_package("RcppParallelw", min_version = T)
    

    use_package 函数会自动为您添加DESCRIPTION 中所需的任何条目。 此外,min_version = T 选项将确保您的软件包需要 RcppParallelw 的版本不低于您当前安装的版本。

    【讨论】:

    • 这一切都很好,但它并没有解决所提出的问题。
    猜你喜欢
    • 2017-04-14
    • 1970-01-01
    • 2014-06-02
    • 2022-06-11
    • 2019-11-22
    • 2022-01-02
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多