标签归档:R包开发

Rcpp简明入门


本文作者:张晔,中山大学数学与计算科学学院硕士在读,研究方向为生物统计,现就职于华南统计科学中心。

Rcpp牛到什么程度,我想不用我多说。光是看Author五人组的名字就足够唬人了(简直是R包开发男子天团了)。最近正在为实验室开发R包(平生第一次),愉快地用起了Rcpp。有过这些天之后觉得感觉真的很好,于是也就厚颜无耻地写篇小文介绍一下。以下的内容都是在Linux下完成了,Windows的朋友们需要安装Rtools才能用上Rcpp。

1. cppFunction和sourceCpp

首先我们来看看第一个例子。

cppFunction(
    'int fib_cpp_0(int n){
         if(n==1||n==2) return 1;
         return(fib_cpp_0(n-1)+fib_cpp_0(n-2));
    }'
)

这个例子是老掉牙的计算第n个Fibonacci数的函数,不过既然Dirk老爷子也用这个例子,我们也就将就一下把。运行这段代码之后,你可以在R的Workplace中看到一个名为fib_cpp_0的函数。我们来看看跟R版本的Fib_r的对比。

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

继续阅读Rcpp简明入门