= 0.-6ren">
gpt4 book ai didi

c++ - 我是否需要在描述文件中为使用它的 R 包导入 RccpEigen,或者 "LinkingTo"就足够了吗?

转载 作者:太空狗 更新时间:2023-10-29 20:58:24 27 4
gpt4 key购买 nike

我使用 RcppEigen.package.skeleton() 作为模板向现有 R 包添加一个小函数,因此我的 DESCRIPTION 文件现在包含以下行:

Imports: Rcpp (>= 0.11.3), RcppEigen (>= 0.3.2.3.0)
LinkingTo: Rcpp, RcppEigen

但是,做 R CMD check --as-cran <myPackageName_1.0.0>.tar.gz给出以下内容:

“Depends/Imports 中的包应该只在 LinkingTo: 'RcppEigen' 中”

Writing R Extensions 页面说:“如果这些是包含源代码的 C++ header 或在安装时完成静态链接,则在‘LinkingTo’中指定一个包就足够了:不需要(通常不应该)列出这些包在“依赖”或“导入”字段中。这包括 CRAN 包 BH 和几乎所有 RcppArmadillo 和 RcppEigen 的用户。”

我不懂C++,所以我不知道这是什么意思。我创建包的过程在这里:RcppEigen - going from inline to a .cpp function in a package and "Map"

可以从“导入”中删除 RcppEigen 吗?为什么/为什么不可以? (即,对于我的情况,您能否解释一下 Writing R Extension 页面在说什么,以便我能够理解我在做什么?我实验室的 R 和软件专家都表示他们不理解“导入”之间的区别”和“链接到”。)

最佳答案

简要说明:

  1. 目前 CRAN 上有 25 个包使用 RcppEigen。这使得 25 个工作案例研究成为可能。你可以看一两个。
  2. LinkingTo:通常就足够了。
  3. 骨架生成器仍然添加导入可能是一个错误。我们不再在 RcppArmadillo 中这样做。

当我刚刚运行RcppArmadillo的相应函数时,我得到了

Imports: Rcpp (>= 0.11.3)
LinkingTo: Rcpp, RcppArmadillo

所以我倾向于一个错误。我现在打开an issue ticket

更广泛地说,LinkingTo: 和 Imports: 之间的区别是

  • Imports:是 Depends 的首选现代替代方案;你还需要使用 NAMESPACE
  • LinkingTo: 主要用于指向头文件,就像我们在这里所做的那样。

所以编写 R 扩展,或 Hadley's online book了解详情。

关于c++ - 我是否需要在描述文件中为使用它的 R 包导入 RccpEigen,或者 "LinkingTo"就足够了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27789204/

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