RRcpp属性

示例

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