R语言里调用C++

来源:互联网 发布:淘宝无线套餐链接转换 编辑:程序博客网 时间:2024/05/20 01:44

  使用Rcpp可以很方便地在.r脚本里调用C++函数。软件环境:R2.15.3+RStudio 0.99+RTools30.exe + Rcpp
  1.在R2.15.3上安装Rcpp
  打开R —》点击工具栏是的【程序包】—》设置CRAN镜像—》选择“Chian(Xiamen)”,如图(1)、(2)所示:

这里写图片描述
图(1) 点击“程序包”

这里写图片描述
图(2) 选择“China(Xiamen)”镜像

  点击【程序包】—》选择“Rcpp”–>OK,如图(3)、(4)所示:
这里写图片描述
图(3) 安装程序包

这里写图片描述
图(4) 选择Rcpp

  2. 先在RStudio里设置R的版本为2.15.3,然后安装Rtools30.exe
  打开RStudio,点击工具栏上的【Tools】—-》global options —》在【General】页面,点击“Change”,勾选“Choose a specific version of R”–>R2.15.3,如图(3)所示:
这里写图片描述
图(5) 在RStudio里设置R的版本为2.15.3

  打开RSudio —》File —》New File –》 C++ File,这时会弹出”RTools没有安装“的提示,点击“是”,就自动下载RTools30,一直等它到Extra,也就是自解压安装完成,我们就会在目录C:\RBuildTools\3.0看到version.txt,如图(4)所示:
这里写图片描述
图(6) 在RStudio新建C++文件时,会自动提示,点击【安装】按钮,就可以安装RTools30

  3. 新建一个主脚本文件: mfibR.R,一个次脚本文件: fib_R.R,一个c++文件:fibercpp.cpp,其代码分别如下:
  //mfibR.R  

#设置R的工作目录setwd("G:\\myProject\\RDoc\\Unit2\\rChap1")##加载.r文件source('fib_R.R')#fib_r(30)#加载cpp文件Rcpp::sourceCpp('fibcpp.cpp')#fib_cpp_1(3)system.time(fib_r(30))system.time(fib_cpp_1(30))

  //fib_R.R

fib_r <- function(n){  if(n==1||n==2) return(1)  return(fib_r(n-1)+fib_r(n-2))}

  //fibcpp.cpp  

#include <Rcpp.h>using namespace Rcpp;//注意每一个函数之前,都有加一个//[[Rcpp::export]]// [[Rcpp::export]]int fib_cpp_1(int n){  if(n==1||n==2) return 1;  return fib_cpp_1(n-1)+fib_cpp_1(n-2);}

  选中mfibR.R里的第10行、第11行,按Ctrl+Enter,得到如下结果:

这里写图片描述
图(7) R语言里调用C++,执行斐波那契数列的递归,可以看出C++代码比R代码所需的时间更短,即C++执行迭代或循环语句的速度很快,是R语言的1000倍
  
  RStudio0.99下载地址:
  链接:http://pan.baidu.com/s/1o7dWc7w 密码:i43t
  R-2.15.3 for windows下载地址:
  链接:http://pan.baidu.com/s/1dEpdJrj 密码:4mbs
  R-3.2.3 for windows下载地址:
  链接:http://pan.baidu.com/s/1i3NRnj3 密码:h6p0
  Rcpp0.12下载地址
  链接:http://pan.baidu.com/s/1jGYE6Dw 密码:4er6
  Rtools30与Rtools33下载地址:
  链接:http://pan.baidu.com/s/1hrd2tNY 密码:ek1b
  或者:http://download.csdn.net/detail/sanqima/9348359

1 0
原创粉丝点击