我的编程空间,编程开发者的网络收藏夹
学习永远不晚

R语言入门使用RStudio制作包含Rcpp代码的R包

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

R语言入门使用RStudio制作包含Rcpp代码的R包

前面博客中有提及,当我们进行模拟想要再次进行提速时,通常都会使用Rcpp将我们的R代码改成C++代码。具体Rcpp的使用可参考博客:Rcpp入门R代码提速方法过程R语言学习RcppEigen进行矩阵运算

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

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

1. 创建项目

首先我们进入RStudio,然后选择左上角的FileNew Project

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

再选择R Package

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

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

Project

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

2. 修改一些文件

从上面界面的右下角的Files框框中,可以发现已经多出了很多文件,包括DISCRIPTION等文件以及manRclass="lazy" data-src三个文件夹。

R文件夹中存的是R代码,class="lazy" data-src文件夹中是C++代码(包括我们之前添加的C++代码)。

 

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


Imports: Rcpp
LinkingTo: Rcpp, RcppEigen

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

DISCRIPTION

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

3. 打包

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

选择上方的Build——Build Source Package

点击右上角的Build中的Build & Reload

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

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

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

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

RcppEigen

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

问题解决传送门

R包制作后出现not available for错误问题解决

最后,就可以开心地享用新鲜出炉的包来做snowfall并行或者发给别人使用啦!

以上就是R语言入门使用RStudio制作包含Rcpp代码的R包的详细内容,更多关于RStudio制作Rcpp代码R包的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

R语言入门使用RStudio制作包含Rcpp代码的R包

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Docker入门系列之二:使用dockerfile制作包含指定web应用的镜像

在前一篇文章:Docker入门系列之一:在一个Docker容器里运行指定的web应用 里,我们已经成功地将我们在本地开发的一个web应用部署到Docker容器里运行。本文将介绍如何制作一个包含了这个web应用的Docker镜像。镜像制作好之
2023-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录