如何解决添加和Rcpp文件到现有的r包?
我已经制作了一个简单的R包(纯R)来解决蛮力问题,然后我尝试通过编写Rcpp脚本来加快代码速度。我编写了一个脚本,将运行时间与“ bench”库进行比较。现在,如何将该脚本添加到程序包中?我试图添加
#'@importFrom Rcpp cppFunction
在我的R脚本顶部并将Rcpp文件插入scr文件夹中,但是没有用。有没有一种方法可以将其添加到我的r包中,而无需从头开始创建包?很抱歉,是否已经有人问过我,但我是陌生的,完全迷路了。
解决方法
这种转换实际上(仍然)非常困难(就需要多个文件而言)。很容易忽略细节。让我向您介绍原因。
让我们假设您使用R软件包package.skeleton()
启动了一个工作软件包。那是最简单,最普遍的情况。该程序包将起作用(但有警告,请参阅我的pkgKitten
程序包以获取包装而不是清除信息,还有其他十个程序包有助于CRAN上的功能和程序包)。特别要注意的是,关于roxygen2
我什么也没说,这只是增加了一点复杂性,因此让我们只关注.Rd
文件。
您现在可以将最简单的软件包与Rcpp
所构建的软件包进行对比,即使用Rcpp.package.skeleton()
。您至少会看到 这些差异
-
DESCRIPTION
代表LinkingTo:
和Imports
-
NAMESPACE
代表importFrom
以及useDynLib
行 - 新的
src
目录以及可能需要的src/Makevars
所有这些使通过Rcpp.package.skeleton()
(基本上)启动新程序包和将现有程序包代码复制到该程序包中变得更加容易。我们只是没有转换助手。我仍然会不时地进行您尝试的“手动转换”,甚至我需要尝试一两次,而且我已经多次看到所有错误消息...
因此,即使您不想“复制所有内容”,我认为最简单的方法是
- 使用和不使用
Rcpp
创建两个软件包
- 执行递归
diff
- 确保差异适用于您的原始包装。
PS请记住,当您使用roxygen2
并在src/
目录中拥有文档时,始终要先运行Rcpp::compileAttributes()
,然后再运行roxygen2::roxygenize()
。 RStudio和其他助手为您做到了,但是仍然很容易忘记...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。