使用输入矩阵RcppArmadillo进行索引

时间:2014-11-09 03:26:23

标签: rcpp armadillo

我有两个向量..一个是按组输出,第二个是对一个组的appartenance的索引。在实践中,它就是那样的

mean_group = 1,2,3

group_id = 1,1,3,2,3,2

我想将每个id分配给它的组的值。在基本的R中,我只会做mean_group [group_id] ..

我必须避免使用循环,否则,使用armadillo就没有意义了。有没有办法做到这一点?

提前致谢

1 个答案:

答案 0 :(得分:1)

我不确定你在Armadillo文档中试图找到这个有多难,但这在Armadillo开箱即用。请尝试以下文件armaind.cpp

#include <RcppArmadillo.h>

// [[Rcpp::depends(RcppArmadillo)]]

// [[Rcpp::export]]
arma::vec subsetter(arma::vec big, arma::uvec ind) {
  arma::vec small = big.elem( ind );
  return small;
}

/*** R
big <- 2*(1:10)
ind <- c(3,5,7)
subsetter(big, ind)
*/

让你

R> Rcpp::sourceCpp("/tmp/armaind.cpp")

R> big <- 2*(1:10)

R> ind <- c(3,5,7)

R> subsetter(big, ind)
     [,1]
[1,]    8
[2,]   12
[3,]   16
R> 

注意R和C ++之间的逐个索引差异。