Optimizing R Code with Rcpp
Romain François
Consulting Datactive, ThinkR
# see also ?weighted.mean
weighted_mean_R <- function(x, w){
sum(x*w) / sum(w)
}
# see also ?weighted.mean
weighted_mean_R <- function(x, w){
sum(x*w) / sum(w)
}
# see also ?weighted.mean
weighted_mean_R <- function(x, w){
sum(x*w) / sum(w)
}
# see also ?weighted.mean
weighted_mean_R <- function(x, w){
sum(x*w) / sum(w)
}
weighted_mean_loop <- function(x, w){
total_xw <- 0
total_w <- 0
for( i in seq_along(x)){
total_xw <- total_xw + x[i]*w[i]
total_w <- total_w + w[i]
}
total_xw / total_w
}
// [[Rcpp::export]]
double weighted_mean_cpp( NumericVector x, NumericVector w){
double total_xw = 0.0 ;
double total_w = 0.0 ;
int n = ___ ;
for( ___ ; ___ ; ___ ){
// accumulate into total_xw and total_w
}
return total_xw / total_w ;
}
bool test = NumericVector::is_na(x) ;
double y = NumericVector::get_na() ;
Optimizing R Code with Rcpp