【问题标题】:R package: underscores added to RcppExports.R when buildingR 包:构建时添加到 RcppExports.R 的下划线
【发布时间】:2026-02-22 16:25:01
【问题描述】:

我在不同的计算机上使用 Rstudio 在同一个 R 包上工作,但由于某种原因,每当我构建包时,一些计算机会通过在某些函数前面添加下划线来修改 RcppExports.RRcppExports.cpp 文件.例如,在查看编译包前后文件的差异时可以发现这一点(第一行是之前,第二行是之后):

    .Call('PkgName_FunctionName', PACKAGE = 'PkgName', arguments)
    .Call('_PkgName_FunctionName', PACKAGE = 'PkgName', arguments)

这让我很困扰,因为 git 认为这是一种变化。

我的问题是:

  • 为什么要包含下划线?
  • 如何才能在编译包时不修改任何文件?

【问题讨论】:

  • 您是否在不同的机器上使用不同版本的 R/包?当您提供某种reproducible example 或足够的信息来重新创建错误时,帮助会容易得多。

标签: r rstudio r-package


【解决方案1】:

确保两台机器上的 Rcpp 版本相同(当前)。那么RcppExports.{R,cpp} 文件将是相同的。

更改是 R 上游(大约 R 3.4.0)的要求,我们需要进行调整。

另请注意,您可能希望 registration=TRUE 在您的 NAMESPACE 文件中,在这种情况下表单变为

.Call(`_PkgName_FunctionName`, arguments)

【讨论】:

  • 只是为了确保正确的(最新版本)包含下划线,对吧?
  • 是的,你可以通过阅读最近的包源来做到这一点。去年春天做出了改变。
最近更新 更多