我正在准备一个 R 包以提交给 CRAN。 R CMD 检查给了我以下注释:
外部函数调用不同的包:
.Fortran("cinc", ...
包=“cmprsk”)
.Fortran("crstm", ... PACKAGE = "cmprsk")
看
《Writing R》的“系统和外语界面”一章
扩展手册。
我如何摆脱这个注释?我无法通过阅读本章或搜索网络找到答案。也许我错过了一些非常简单的事情。我之前用相同的代码提交了 R2.x 的包,从来没有遇到过这个问题。这是 R3.x 的新功能。
该警告将您引向《系统与外语界面》章节 http://cran.r-project.org/doc/manuals/R-exts.html#Linking-to-other-packages of the 编写 R 扩展手册中明确指出(在编写便携式包 http://cran.r-project.org/doc/manuals/R-exts.html#Writing-portable-packages部分):
通过 .Internal、.C、.Fortran、.Call 或 .External 调用 R 或其他包中的编译代码是不可移植的,因为此类接口可能会随时更改,恕不另行通知,并且可能会导致您的代码终止 R 进程。
(可能)澄清:“在 R 或其他包中”是指“在基本 R 系统或其他包中”。 (“终止 R 进程”意味着如果您调用的函数的内部发生变化,您的代码可能会导致某人的 R 会话崩溃。)
你可以对 CRAN 维护者说你喜欢什么,但他们在技术点上很少出错,而且原因几乎总是有记录的某处.
您的一些选择是:
- 如果你不想提交给CRAN,可以忽略NOTE。
- 您可以从其他软件包中复制 Fortran(或 C)代码并将其合并到您自己的软件包中(您可能需要小心许可证,并且征求许可肯定是有礼貌的)
- 你可以要求其他包的维护者围绕他们的低级代码实现并导出一个薄 R 包装器
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)