gpt4 book ai didi

r - 对不同包的外部函数调用 注意

转载 作者:行者123 更新时间:2023-12-01 01:00:13 27 4
gpt4 key购买 nike

我正在准备一个 R 包以提交给 CRAN。 R CMD 检查给了我以下注意:

Foreign function calls to a different package:
.Fortran("cinc", ... PACKAGE = "cmprsk")
.Fortran("crstm", ... PACKAGE = "cmprsk")
See the chapter 'System and Foreign language interface' of the 'Writing R Extensions manual.



我如何摆脱这个注意?无论是阅读本章还是在网上搜索,我都找不到答案。也许我错过了一些非常简单的东西。我之前用相同的代码为 R2.x 提交了包,从来没有出现过这个问题。这是 R3.x 的新功能。

最佳答案

该警告将您指向 'System and Foreign language interface' chapter的编写 R 扩展手册,其中特别说明(在 Writing Portable Packages 部分):

It is not portable to call compiled code in R or other packages via .Internal, .C, .Fortran, .Call or .External, since such interfaces are subject to change without notice and will probably result in your code terminating the R process.


(可能)澄清:“在 R 或其他包中”意味着“在基本 R 系统或其他包中”。 (“终止 R 进程”意味着如果您调用的函数的内容发生变化,您的代码可能会使某人的 R session 崩溃。)
你可以说你喜欢 CRAN 维护者什么,但他们在技术方面很少出错,原因几乎总是在某处记录。
您的一些选择是:
  • 如果不想提交给CRAN,可以忽略NOTE。
  • 您可以从其他包中复制 Fortran(或 C)代码并将其合并到您自己的包中(您可能需要小心许可,并且请求许可肯定会礼貌)
  • 你可以要求另一个包的维护者在他们的低级代码周围实现和导出一个薄的 R 包装器
  • 关于r - 对不同包的外部函数调用 注意,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24150185/

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