用 Rcpp 优化 R 代码
Romain François
Consulting Datactive, ThinkR
Rcpp 向量类:
NumericVector 操作 numeric 向量,如 c(1,2,3)IntegerVector 用于 integer,如 1:3LogicalVector 用于 logical,如 c(TRUE, FALSE)CharacterVector 用于字符串,如 c("a", "b", "c")此外:
List 表示列表,即任意 R 对象的向量最重要的方法:
x.size() 返回向量 x 的元素个数x[i] 返回向量 x 第 i 个位置的元素C++ 的索引从 0 开始。索引是相对第一个位置的偏移量。
// 向量第一个元素
x[0]
// 最后一个元素
x[x.size()-1]
R 的索引从 1 开始。
# 第一个
x[1]
# 最后一个
x[length(x)]

// x 来自其他地方(稍等…)
NumericVector x = ... ;
double value = x[0] ;
x[0] = 12.0 ;
// x 来自其他地方(稍等…)
NumericVector x = ... ;
int n = x.size() ;
double value = x[n-1] ;
x[n-1] = 12.0 ;
// x 来自其他地方
NumericVector x = ... ;
int n = x.size() ;
for( int i=0; i<n; i++){
// 处理 x[i]
}
用 Rcpp 优化 R 代码