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

use*_*599 5 r clrpackage

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

外部函数调用不同的包:
.Fortran("cinc", ... PACKAGE = "cmprsk")
.Fortran("crstm", ... PACKAGE = "cmprsk")
请参阅“系统和外语界面”一章的“编写 R 扩展手册”。

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

Ben*_*ker 6

警告点,你向“系统和外语界面”一章中的写作R附加手册,具体说,(在写作便携包部分):

通过 .Internal、.C、.Fortran、.Call 或 .External 调用 R 或其他包中的编译代码是不可移植的,因为这些接口可能会更改,恕不另行通知,并且可能会导致您的代码终止 R 进程。

(可能)澄清:“在 R 或其他包中”意味着“在基本 R 系统或其他包中”。(“终止 R 进程”意味着如果您调用的函数的内容发生变化,您的代码可能会使某人的 R 会话崩溃。)

你可以说你喜欢 CRAN 维护者什么,但他们在技术方面很少出错,原因几乎总是在某处记录

您的一些选择是:

  • 如果不想提交给CRAN,可以忽略NOTE。
  • 您可以从另一个包中复制 Fortran(或 C)代码并将其合并到您自己的包中(您可能需要小心许可,并且征求许可肯定是礼貌的)
  • 你可以要求另一个包的维护者在他们的低级代码周围实现和导出一个薄的 R 包装器