Rpackage:Rstudio 可能生成错误的 NAMESPACE 文件

Rpackage: Rstudio possibly generating bad NAMESPACE file

我正在 Rstudio 中制作 R 包,我 select 编辑了选项 Configure Build Tools > Configure 和 select Use roxygen to generate NAMESPACE。我在 Rcpp 中编写了我的函数,这就是我用 roxygen2:

生成它时 NAMESPACE 的样子
# Generated by roxygen2 (4.1.1): do not edit by hand

export(function1)
export(function2)
export(function3)
export(function4)

由于我的函数是用 Rcpp 编写的,然后我将其导出,因此它们将通过 .Call 在 R 中使用。但是,从 writing R extensions 我们应该在这种情况下使用 useDynLib()。这就是为什么我认为我在尝试调用 function1 时出错并且错误是:

Error in .Call("Mypackage_function1", PACKAGE = "Mypackage", var1,  : 
"Mypackage_function1" not available for .Call() for package "Mypackage"

当我在Rstudio中启动项目时使用默认NAMESPACE时,我在NAMESPACE中有以下内容:

useDynLib(packagename)
exportPattern("^[[:alpha:]]+")
importFrom(Rcpp, evalCpp)

当我使用默认值 NAMESPACE 时,我可以使用 .Call 调用函数,但是当我检查我没有使用 roxygen 生成 NAMESPACE 的包时,我收到警告。

有解决办法吗?任何建议表示赞赏。

这与RStudio的使用无关:为了让Roxygen生成相关的useDynLib规范,you need to use the @useDynLib tag in a Roxygen doc comment:

#' @useDynLib packagename

您可以在任何地方执行此操作(您可以在其中使用普通的 Roxygen 注释),但是将其放入包文档而不是特定函数的文档中是有意义的。通常这位于一个名为 R/packagename-package.r:

的文件中
#' My package documentation
#' … bla bla …
#' @name packagename
#' @docType package
#' @useDynLib packagename
NULL