Rcpp属性使使用R和C ++的过程变得简单。属性的形式为:
// [[Rcpp :: attribute]]
属性的使用通常与以下内容相关:
// [[Rcpp :: export]]
通过读取C ++文件时,将其直接放在声明的函数头的上方sourceCpp()。
以下是使用属性的外部C ++文件的示例。
// 将下面的代码添加到C ++文件Rcpp_example.cpp中 #include <Rcpp.h> using namespace Rcpp; // 将导出标签放置在函数声明上方。 // [[Rcpp :: export]] double muRcpp(NumericVector x){ int n = x.size(); // 向量大小 double sum = 0; // 总和值 // 对于循环,请注意cpp索引移至0 for(int i = 0; i < n; i++){ // sum的简写= sum + x [i] sum += x[i]; } return sum/n; // 获取并返回均值 } // 将依赖函数放在call或 // 使用以下方法声明函数定义: double muRcpp(NumericVector x); // [[Rcpp :: export]] double varRcpp(NumericVector x, bool bias = true){ // 使用C ++函数计算平均值 double mean = muRcpp(x); double sum = 0; int n = x.size(); for(int i = 0; i < n; i++){ sum += pow(x[i] - mean, 2.0); // 广场 } return sum/(n-bias); // 收益差异 }
要在R中使用此外部C ++文件,请执行以下操作:
require(Rcpp) # Compile File sourceCpp("path/to/file/Rcpp_example.cpp") # Make some sample data x = 1:5 all.equal(muRcpp(x), mean(x)) ## TRUE all.equal(varRcpp(x), var(x)) ## TRUE