【ONE·R |
您所在的位置:网站首页 › 俄罗斯套娃英文简单介绍一下视频 › 【ONE·R |
总言
课堂演讲:R语言与CPP混合编程课后学习汇报。 文章目录 总言1、汇报目的2、RCPP2.1、简单介绍:2.2、简单使用演示:2.1.1、Rcpp包与RTools2.2.2、上手尝试1.0:一个hello world小程序。2.2.3、上手尝试2.0:求斐波那契数第N个数·递归实现。2.2.4、一些说明 2.3、初探RCPP 1、汇报目的 1)、关于本次主题汇报的想法诞生? 从自身经历角度: 1、个人对C、C++、Linux操作系统有简单的了解,R虽然为解释型语言,但同属于计算机编程语言。 2、已知存在混合编程的情景,最常见的属于C/C++混合编程,比如Linux操作系统主要是通过C和C++编写的。这个例子相对缺陷在于:C++是基于C的改进,能使用C的基本语法。但是,多语言混合编程也存在于python、Java等各种语言间。 3、既然正在了解R语言,那么正好可以探索一下其与C/C++的混合编程,也是熟悉对这些语言的使用。 从R语言自身来看: 1、在《R语言实战》中有这样一段描述: 关于虚拟内存: 属于计算机操作系统相关的知识,我们的程序可存储于各种外储中,比如磁盘,程序运行需要加载到内存,而加载到内存中的程序称之为进程。CPU对进程有一套完整的调度模式,虚拟空间是操作系统为了更好的管理物理内存而为进程设置的一套体系。 关于RCPP: 这是接下来探讨的内容。 2、RCPP 2.1、简单介绍:1)、是什么 1、Rcpp包是一个打通R语言和C++语言的通信组件包,可以把C++代码与R程序连接在一起,且不用关心C++中那套繁琐的编译、链接、接口问题。 2、R语言和C++语言的数据类型是不经相同,通过Rcpp包能够对它们进行完整的映射转换。 3、Rcpp支持把C++代码写在R源程序文件内, 执行时自动编译连接调用; 也支持把C++代码保存在单独的源文件中, 执行R程序时自动编译连接调用。 2)、有什么用 1、其最大的用途之一在于提高运行效率,可以把R代码中遇到运行速度瓶颈部分改写成C++代码。 2、C++或C提供了各种方便使用的函数库,Rcpp可支持这些外来函数库的调用。 2.2、简单使用演示: 2.1.1、Rcpp包与RTools 1)、如何安装Rcpp > install.packages("Rcpp"); WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding: https://cran.rstudio.com/bin/windows/Rtools/ trying URL 'https://cran.rstudio.com/bin/windows/contrib/4.2/Rcpp_1.0.9.zip' Content type 'application/zip' length 2842384 bytes (2.7 MB) downloaded 2.7 MB 程序包‘Rcpp’打开成功,MD5和检查也通过 下载的二进制程序包在 C:\Users\无咎\AppData\Local\Temp\RtmpMnQcFB\downloaded_packages里 >
2)、如何安装RTools 原因说明: 由于涉及到编译, 所以Rcpp比一般的扩展包有更多的安装要求: 除了要安装Rcpp包之外, 还需要安装RTools包。 RTools包: 用于C, C++, Fortran程序编译链接的开发工具包。 相关问题: RStudio自己的自动安装RTools的功能可能有问题, 安装后不能正常编译含有Rcpp的Rmd文件。 按照RTools 4.0的要求, 还要在自己的“我的文档”文件夹中生成名为.Renviron的如下文本文件: 这里采用非手动配置方式:进入R Studio里,运行以下代码即可。 writeLines('PATH="${RTOOLS40_HOME}\\usr\\bin;${PATH}"', con = "~/.Renviron")运行后关闭RStudio,重新打开并运行下述代码Sys.which("make"),检测是否配置成功: > Sys.which("make") make "C:\\RBUILD~1\\4.2\\usr\\bin\\make.exe"如上述可看到成功配置。 2.2.2、上手尝试1.0:一个hello world小程序。要求: 用C++编写一个能打印“hello world”的函数,在R中调用这个函数。 1)、如何在Rstudio中建立一个C++文件: 文件打开: 这里的英文做了详细解释:可以阅读并演示。
下面我们来演示自己的函数,在CPP文件中编写如下代码: #include #include #include //头文件:里面包含各种函数实现的声明、定义 using namespace Rcpp; //命名空间:起限制作用,能解决名称冲突问题。 using namespace std;//这两句的含义是展开Rcpp、std这两个空间中所包含的内容。 // [[Rcpp::export]] string HelloByCpp(string s) { cout |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |