R包问题:Rstudio可能会生成不良的NAMESPACE文件

3

我正在使用Rstudio制作一个R软件包,我选择了选项Configure Build Tools > Configure并选择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中使用。但是,从编写R扩展中,我们应该在这种情况下使用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
有没有解决方法?任何建议都将不胜感激。
1个回答

3

这与RStudio的使用无关:为了让Roxygen生成相关的useDynLib规范,你需要在Roxygen文档注释中使用@useDynLib标签。具体信息请参考这里

#' @useDynLib packagename

您可以在任何地方进行此操作(可以使用常规的Roxygen注释),但将其放入软件包文档中,而不是特定函数的文档中,是有意义的。通常,它位于名为 R/packagename-package.r 的文件中。
#' My package documentation
#' … bla bla …
#' @name packagename
#' @docType package
#' @useDynLib packagename
NULL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接