ブーストには、マトリックスの連続した、または少なくとも段階的な一貫したスライスに制限があると思います。R では、ランダムなベクトル c(5,2,8) を使用し、それを使用して行列 M[c(5,2,8),] にインデックスを付けることができます。たとえば...
質問する
477 次
1 に答える
4
Armadilloは、わずか2 週間前にリリースされたバージョン 3.0 でこれをサポートしています。
これはRcppArmadilloを介した実際の例です:
R> library(inline)
R>
R> code <- '
+ arma::mat M = Rcpp::as<arma::mat>(m); // normal matrix
+ arma::uvec V = Rcpp::as<arma::uvec>(v); // unsigned int vec
+ arma::mat N = M.cols(V); // index matrix by vec
+ return Rcpp::wrap(N);
+ '
R>
R> fun <- cxxfunction(signature(m="numeric", v="integer"),
+ code,
+ plugin="RcppArmadillo")
R> M <- matrix(1:25,5,5)
R> V <- c(1L, 3L, 5L) - 1 # offset by one for zero indexing
R> fun(M, V)
[,1] [,2] [,3]
[1,] 1 11 21
[2,] 2 12 22
[3,] 3 13 23
[4,] 4 14 24
[5,] 5 15 25
R>
列ではなく行を選択するマッチング関数があります。
于 2012-04-19T00:44:48.347 に答える