R语言里调用C++

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

R语言里调用C++_第1张图片
图(1) 点击“程序包”

R语言里调用C++_第2张图片
图(2) 选择“China(Xiamen)”镜像

  点击【程序包】—》选择“Rcpp”–>OK,如图(3)、(4)所示:
R语言里调用C++_第3张图片
图(3) 安装程序包

R语言里调用C++_第4张图片
图(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)所示:
R语言里调用C++_第5张图片
图(5) 在RStudio里设置R的版本为2.15.3

  打开RSudio —》File —》New File –》 C++ File,这时会弹出”RTools没有安装“的提示,点击“是”,就自动下载RTools30,一直等它到Extra,也就是自解压安装完成,我们就会在目录C:\RBuildTools\3.0看到version.txt,如图(4)所示:
R语言里调用C++_第6张图片
图(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 
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,得到如下结果:

R语言里调用C++_第7张图片
图(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

你可能感兴趣的:(R语言,C++,电脑,R语言,c语言,Rtools,RStudio,Rcpp)