6

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

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

我如何摆脱这个注意?我无法通过阅读本章或搜索网络找到答案。也许我错过了一些非常简单的东西。我之前用相同的代码为 R2.x 提交了包,从来没有这个问题。这是 R3.x 的新事物。

4

1 回答 1

7

警告将您指向编写 R 扩展手册的“系统和外语界面”一章,该章节特别说明(在编写可移植包部分):

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

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

你可以说出你喜欢 CRAN 维护者的哪些方面,但他们在技术方面很少出错,而且原因几乎总是记录在某个地方

您的一些选择是:

  • 如果您不想提交给 CRAN,您可以忽略 NOTE。
  • 您可以从另一个包中复制 Fortran(或 C)代码并将其合并到您自己的包中(您可能需要注意许可证,并且请求许可当然是礼貌的)
  • 你可以要求另一个包的维护者在他们的低级代码周围实现和导出一个精简的 R 包装器
于 2014-06-11T18:14:46.670 回答