RStudio制作包含Rcpp代码的R包
前面博客中有提及,当我们进行模拟想要再次进行提速时,通常都会使用Rcpp将我们的R代码改成C++代码。具体Rcpp的使用可参考博客:让你的R代码更快——Rcpp入门,利用RcppEigen进行矩阵运算。
平时在我们使用的时候,直接使用Rcpp::sourceCpp()
就可以直接将我们的C++代码中的函数进行导入,这不会遇到什么问题,但如果我们想要使用snowfall
进行并行时就不能再这样做了。遇到的问题在博客中有进行说明:R中两种常用并行方法——2. snowfall。
而解决这个问题的有效途径,就是将我们的Rcpp代码进行打包,然后再对包进行调用。下面我们就来介绍:如何使用RStudio制作包含Rcpp代码的R包。
1. 创建项目
首先我们进入RStudio
,然后选择左上角的File
—New Project
。
![新建项目](https://img-blog.csdn.net/20180831193949279?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTkyOTUyNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
新建Project后会得到如下图所示的界面,我们接着选New Directory
,
再选择R Package
,
最后在得到如下所示的界面后,我们在Package Name
中输入我们包的名称,然后再在下面选择Add
,将我们的.cpp
格式的C++文件选择进去(里面是我们的函数)。最后点击Create package
,即可创建一个R包的project了。
创建完之后,RStudio
会弹出一个新的界面,如下图所示。
然后我们需要对下述界面里面的一些配置文件进行一定的修改,然后才能完善我们的R包。
2. 修改一些文件
从上面界面的右下角的Files
框框中,可以发现已经多出了很多文件,包括DISCRIPTION
等文件以及man
、R
、src
三个文件夹。
在R
文件夹中存的是R代码,src
文件夹中是C++代码(包括我们之前添加的C++代码)。
可能你的C++代码中只有添加进去.cpp
文件,由于我的代码中不止使用了#include <Rcpp.h>
,还有使用#include <RcppEigen.h>
,这里注意,一定需要在DISCRIPTION
文件的最后添加下面两行(尤其是LinkingTo,不然会编译失败):
Imports: Rcpp
LinkingTo: Rcpp, RcppEigen
此外还可以在DISCRIPTION
文件,添加一些作者姓名等一些重要信息。
直接点开DISCRIPTION
文件,会如上图所示,我们直接进行修改即可。这里需要注意一下,Imports
里面涉及到软件的版本,是根据你R中现有包的版本来,如果想让更多的电脑使用,在不影响程序使用的前提下,可以适当降低依赖包的版本。
3. 打包
最后一步就是打包,这里介绍两种打包方式:
- 选择上方的
Build
——Build Source Package
- 点击右上角的
Build
中的Build & Reload
第一种方法打包成功后,当下面出现DONE
字样时,说明包会在默认路径下安详地躺着了。
第二种方法打包成功后会自动library
载入。
4. 使用Eigen或其它依赖库会出现的问题
如果我们再.cpp
文件中使用的不止有Rcpp
库,还有别的库,比如说Eigen
。这时需要注意,用上面的方法打包是失败的,会显示没有Eigen这个库。
这个解决的方法也很简单,直接在DISCRIPTION
文件的LinkTo后面加上RcppEigen
即可,如下图所示:
可能遇到的其他问题
- 制作R包后载入包内函数时,出现 “…” not available for .Call() for package “…” 错误
最后,就可以开心地享用新鲜出炉的包来做snowfall并行或者发给别人使用啦!
RStudio制作包含Rcpp代码的R包相关推荐
- 如何制作自己的R包?
摘自 方匡南 等编著<R数据分析-方法与案例详解>.电子工业出版社 R包简介 R包提供了一个加载所需代码.数据和文件的集合.R软件自身就包含大约30种不同功能的包,这些基本包提供了R软件的 ...
- 进阶必看 | R包制作指南-windows系统
R包制作指南 准备工作 开始创建R包 在Rstudio内完成R包构建 先前与大家分享过如何安装和使用R包,也与大家分享过自定义函数,这些都是R包的基础.一般来说,会将写好的函数进行封装,打包起来 ...
- r语言工作路径linux,R语言实用基础知识_工作路径-注释-安装和卸载R包_2019-12-01...
R语言的实用基础知识有很多,都是我在工作和学习中所整理的,有的是看书整理的,也有的是从网络上的各种博客.各种资源获取的,所以我采用日更的方式进行支持整理和更新,希望能够帮到屏幕前的你! 今天是我日更的 ...
- R语言 image.binarization: 包_想提高文章的引用率?写个R包吧!- 工具准备篇
前言 R语言程序包是R语言的灵魂,是R语言的核心,每一个R语言用户都会使用到R包.2006年3月15日,第一个R包(coxrobust)加入CRAN,截止2020年5月17日,已经有超过15000个R ...
- BiocManager安装R包解决下载速度太慢的问题
在安装完R语言和RStudio后,我配置了R包安装的镜像.配置镜像的方式有两种. 一是直接修改R安装路径:.\R-4.1.2\etc下的Rprofile.site文件(如下图所示),添加如下内容: # ...
- r语言查找是否存在空值_关于R包安装你知道多少?
在R语言的学习过程中离不了各种R包的安装与使用,要使用某个R包首先得学会如何安装该R包.对于R包的安装你知道的有多少?你知道如何指定安装路径吗?为何你每次重新打开R绘画都需要重新安装R包?今天小编带你 ...
- [R语言]R包的安装帮助获取
本文主要参考:Paul Teetor<R语言经典实例>一书 在R语言中,包含的包中有各种应用函数: 1.install.packages('packagename')//安装R包 libr ...
- R包安装报错的解决方法
目录 无法下载 换源 依赖包的问题 依赖包未安装 依赖包版本不对 依赖包与当前R版本不匹配 无法下载 换源 install.packages("tidyverse",repo=&q ...
- 包r语言_R语言代码共享:制作R包
作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量.机器学习.数据可视化.应用统计建模.知识图谱等,著有& ...
最新文章
- 【更新】比较智能的爬取姓名
- Java中获取数据库中两个时间的相差秒数
- SQL Server 无法生成 FRunCM 线程。请查看 SQL Server 错误日志和 Windows 事件日志(转)...
- 跟踪反应流–将Spring Cloud Sleuth与Boot 2结合使用
- 小朋友的经典造句,现在做老师的太不容易了
- python提现_用Python创建比特币钱包,读余额,极速免费转账,标准转账
- PDF文档转换成mobi格式(for kindle),并解决排版问题
- 百度SEO站群爱客影院v3.5自动采集影视网站源码
- Ember.js 初学指南
- C++打印机首选项设置
- PCB多层板设计技巧
- 制作一份简单的网络地图(世博地图的配准和切割)
- ASP.Net三层架构
- Linux和Windows的区别
- 行业洞察系列之《事件管理的 5 个阶段及其改进建议》
- sh_10_嵌套打印小星星
- 基于多视角照片的3D人脸重建
- 苹果cms怎么更换模板教程
- 优秀logo设计解析_优秀logo设计作品及寓意解析,国外精品logo设计图片分享
- php phalcon 安装,Phalcon框架安装与使用教程介绍
热门文章
- html怎么使用element ui,element-ui是什么,以及element-ui如何使用
- 优化Elasticsearch查询性能
- iphone12发布会直播地址苹果12发布会在线观看入口
- 内连级元素有哪些_内联元素和块级元素
- 网站升级维护nginx配置
- Tencent Linux(TencentOS) 十年云原生迭代演进之路
- 可以加载Gif动画和png等图片的方法和控件
- 国庆清北刷题冲刺班 Day6 上午
- html单选框servlet,js、servlet分别获取下拉框、单选框、复选框的值
- 【Java】json与java对象转换,获得数据库自增主键,保存返回数据 (个人梳理)