Tối ưu hóa mã R với Rcpp
Romain François
Consulting Datactive, ThinkR
Các lớp vector trong Rcpp:
NumericVector để thao tác vector numeric, ví dụ c(1,2,3)IntegerVector cho integer ví dụ 1:3LogicalVector cho logical ví dụ c(TRUE, FALSE)CharacterVector cho chuỗi, ví dụ c("a", "b", "c")Ngoài ra:
List cho danh sách, tức vector của các đối tượng R bất kỳPhương thức quan trọng nhất:
x.size() trả về số phần tử của vector xx[i] trả về phần tử ở vị trí i trong vector xĐánh chỉ mục trong C++ bắt đầu từ 0. Chỉ mục là độ lệch so với vị trí đầu.
// phần tử đầu tiên của vector
x[0]
// phần tử cuối cùng
x[x.size()-1]
Đánh chỉ mục trong R bắt đầu từ 1.
# phần tử đầu tiên
x[1]
# phần tử cuối cùng
x[length(x)]

// x đến từ nơi khác (chờ chút ...)
NumericVector x = ... ;
double value = x[0] ;
x[0] = 12.0 ;
// x đến từ nơi khác (chờ chút ...)
NumericVector x = ... ;
int n = x.size() ;
double value = x[n-1] ;
x[n-1] = 12.0 ;
// x đến từ đâu đó
NumericVector x = ... ;
int n = x.size() ;
for( int i=0; i<n; i++){
// thao tác với x[i]
}
Tối ưu hóa mã R với Rcpp