0

我相信 boost 对矩阵的连续或至少逐步一致的切片有限制。在 R 中,我可以有一个随机向量 c(5,2,8) 并使用它来索引矩阵 M[c(5,2,8),] 例如...

4

1 回答 1

4

犰狳从 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 回答