我正在使用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
。有没有解决方法?任何建议都将不胜感激。