第 3 章 基本用法
按照如下三步,即可使用你的Rcpp函数。
- 写(你的函数的)Rcpp代码
- 编译上述代码
- 执行函数
3.1 写Rcpp代码
下面的代码定义了一个名为rcpp_sum()
的函数,来计算一个向量的元素之和。保存代码块内容至 sum.cpp
文件。
sum.cpp
//sum.cpp
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
double rcpp_sum(NumericVector v){
double sum = 0;
for(int i=0; i<v.length(); ++i){
sum += v[i];
}
return(sum);
}
3.1.1 在Rcpp中定义一个函数的格式
下面的代码展示了如何定义一个Rcpp函数的基本格式。
#include<Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
RETURN_TYPE FUNCTION_NAME(ARGUMENT_TYPE ARGUMENT){
//do something
return RETURN_VALUE;
}
#include<Rcpp.h>
: 保证你能使用Rcpp包中定义的的类和函数// [[Rcpp::export]]
:在这行代码下定义的函数,才能(在后面的步骤中)被R获取.using namespace Rcpp;
: 这行代码是可选的。如果你不写,那么你需要在特定的类和函数前面加上前缀Rcpp::
. (比如,Rcpp::NumericVector
)RETURN_TYPE FUNCTION_NAME(ARGMENT_TYPE ARGMENT){}
:需要指定函数的返回值和参数的类型,以及函数名.return RETURN_VALUE;
:return
声明强制返回一个值,但是如果你不返回值(例如,RETURN_TYPE
是void
型,即空),那么可以忽略return
。