首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用roxygen2生成R包时出错

使用roxygen2生成R包时出错
EN

Stack Overflow用户
提问于 2014-05-26 12:15:16
回答 2查看 2.5K关注 0票数 9

我有两个文件,Rfile.R和Cppfile.cpp。

Cppfile.cpp中的内容:

代码语言:javascript
复制
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
int CPPF(int k){return ++k;}

R文件中的内容:

代码语言:javascript
复制
RF<-function(k){return(CPPF(k))}

我想要建立一个基于这两个文件的R包。我使用了Rstudio和Roxygen2的最新版本。

我尝试了3种使用或不使用Roxygen2构建包的方法,并得到了不同的结果:

  1. New >New>Rcpp>Type:Package w/Rcpp,添加Rfile.R和Cppfile.cpp作为源文件。构建并重新装载,一切都很好。这些函数的工作原理是一样的。
  2. New >New>Rcpp>Type:Package w/Rcpp,添加Rfile.R和Cppfile.cpp作为源文件。选择“用RO2生成文档”,检查其所有选项。Build & Reload,功能不起作用。输入" RF“表示RF的内容,输入"CPPF”pops“未找到的对象”。
  3. New >New>Rcpp>Type:Package w/Rcpp,只添加Cppfile.cpp作为源文件。选择“用RO2生成文档”,检查其所有选项。Build & Reload,这个功能可以工作。然后将Rfile.R直接复制到项目文件夹->R文件夹。构建和重新开发,一切都很好,功能运行良好。

我是用错了活性氧还是RO2有虫子?我要把它记录下来。我可以坚持第三种方式,这花费了我很大的精力去寻找,但连线。

谢谢!

解决这个问题的一种方法是:当选择“用RO2生成文档”时,不要选中“命名空间文件”选项。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-26 19:16:54

您混淆了两件事情(不幸的是,这很容易混淆):

首先,// [[Rcpp::export]]属性用于在两个文件( RcppExports.cppRcppExports.R )中自动生成包装器函数.包装器R函数CPPF将由Rcpp::compileAttributes()在这里自动生成,并放入R/RcppExports.R中.

其次,可以使用roxygen注释来管理NAMESPACE,例如使用@export标记。请注意,这与// [[Rcpp::export]]不同!

自动生成的函数不会自动导出.Rcpp.package.skeleton()将生成一个NAMESPACE文件,该文件将自动导出给定名称的所有函数;即exportPattern("^[[:alpha:]]+")条目。对于小型包来说,这已经足够了;但是随着包变得更加复杂,您将需要对您的命名空间进行更细粒度的控制。或者,您可以采用一种约定,在这种约定中,所有内部的、非导出的函数都以.开头。无论哪种方式,这种机制都允许将自动生成的函数导出到包命名空间中。

如果要使用roxygen管理NAMESPACE,则需要将roxygen注释添加到C++函数中,如果希望将它们导出到命名空间中。因此,您可以按以下方式修改您的函数:

代码语言:javascript
复制
#include <Rcpp.h>
using namespace Rcpp;

//' @export
// [[Rcpp::export]]
int CPPF(int k){return ++k;}

请注意,您可能必须运行roxygen2::upgradeRoxygen(),以确保roxygen2接管了新版本的roxygen2NAMESPACE

票数 13
EN

Stack Overflow用户

发布于 2014-05-26 12:34:44

因此,如果2不工作,将其作为(可重复的)错误报告提交给roxygen2团队。

我没有看到Rcpp问题;导入:/命名空间声明可能出了问题。我在这里没有看到Rcpp问题(因为1很好)。

FWIW我还在一些包上使用roxygen2,我也不时用RStudio构建它们。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23869956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档