c++ - 是否有一个 c++ 矩阵库,我可以在其中像 R 中那样使用非连续 vector 索引矩阵?

标签 c++ r matrix

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

最佳答案

Armadillo从不到两周前发布的 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> 

有一个匹配函数来选择行而不是列。

关于c++ - 是否有一个 c++ 矩阵库,我可以在其中像 R 中那样使用非连续 vector 索引矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10216704/

相关文章:

c++ - ECDSA_do_verify 无法仅验证某些散列

c++ - 直方图均衡化实现

c++ - 带有标准容器的 unique_ptr : attempting to reference a deleted function

r - 将变量传递到左侧

java - 将数组中的每个元素与其他元素相加的有效解决方案

excel - 仅将一个矩阵中的对角线值(其他单元格中的零)返回到另一个具有相同维度的矩阵

matlab - 连续重复值 'N' 次,然后递增值 - Matlab(N 不同)

c++ - 链表堆栈复制构造函数 C++

r - 更新R中嵌套循环中的列表

r - ggplotly : log argument cancels axis labels