R语言入门使用RStudio制作包含Rcpp代码的R包_第1页
R语言入门使用RStudio制作包含Rcpp代码的R包_第2页
R语言入门使用RStudio制作包含Rcpp代码的R包_第3页
R语言入门使用RStudio制作包含Rcpp代码的R包_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第R语言入门使用RStudio制作包含Rcpp代码的R包目录1.创建项目2.修改一些文件3.打包4.使用Eigen或其它依赖库会出现的问题前面博客中有提及,当我们进行模拟想要再次进行提速时,通常都会使用Rcpp将我们的R代码改成C++代码。具体Rcpp的使用可参考博客:Rcpp入门R代码提速方法过程,R语言学习RcppEigen进行矩阵运算。

平时在我们使用的时候,直接使用Rcpp::sourceCpp()就可以直接将我们的C++代码中的函数进行导入,这不会遇到什么问题,但如果我们想要使用snowfall进行并行时就不能再这样做了。遇到的问题在博客中有进行说明:R中两种常用并行方法——2.snowfall。

而解决这个问题的有效途径,就是将我们的Rcpp代码进行打包,然后再对包进行调用。下面我们就来介绍:如何使用RStudio制作包含Rcpp代码的R包。

1.创建项目

首先我们进入RStudio,然后选择左上角的File—NewProject。

新建Project后会得到如下图所示的界面,我们接着选NewDirectory,

再选择RPackage,

最后在得到如下所示的界面后,我们在PackageName中输入我们包的名称,然后再在下面选择Add,将我们的.cpp格式的C++文件选择进去(里面是我们的函数)。最后点击Createpackage,即可创建一个R包的project了。

创建完之后,RStudio会弹出一个新的界面,如下图所示。

然后我们需要对下述界面里面的一些配置文件进行一定的修改,然后才能完善我们的R包。

2.修改一些文件

从上面界面的右下角的Files框框中,可以发现已经多出了很多文件,包括DISCRIPTION等文件以及man、R、src三个文件夹。

在R文件夹中存的是R代码,src文件夹中是C++代码(包括我们之前添加的C++代码)。

可能你的C++代码中只有添加进去.cpp文件,由于我的代码中不止使用了#includeRcpp.h,还有使用#includeRcppEigen.h,这里注意,一定需要在DISCRIPTION文件的最后添加下面两行(尤其是LinkingTo,不然会编译失败):

Imports:Rcpp

LinkingTo:Rcpp,RcppEigen

此外还可以在DISCRIPTION文件,添加一些作者姓名等一些重要信息。

直接点开DISCRIPTION文件,会如上图所示,我们直接进行修改即可。这里需要注意一下,Imports里面涉及到软件的版本,是根据你R中现有包的版本来,如果想让更多的电脑使用,在不影响程序使用的前提下,可以适当降低依赖包的版本。

3.打包

最后一步就是打包,这里介绍两种打包方式:

选择上方的Build——BuildSourcePackage

点击右上角的Build中的BuildReload

第一种方法打包成功后,当下面出现DONE字样时,说明包会在默认路径下安详地躺着了。

第二种方法打包成功后会自动library载入。

4.使用Eigen或其它依赖库会出现的问题

如果我们再.cpp文件中使用的不止有Rcpp库,还有别的库,比如说Eigen。这时需要注意,用上面的方法打包是失败的,会显示没有Eigen这个库。

这个解决的方法也很简单,直接在DISCRIPTION文件的LinkTo后面加上RcppEigen即可,如下图所示:

可能遇到的其他问题制作R包后载入包内函数时,出现“…”notavailablefor.Call()forpackage“…”错误

问题解决传送门

R包制作后出现notavailablefor错误问题解决

最后,就可以开心地享用新鲜出炉的包来做snowf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论