特征3 - 切割MatrixXd以反转列顺序

Mar*_*zza 3 c++ r rcpp eigen3

我需要使用RcppEigen来反转MatrixXd的列的顺序.

R我只想做

> M = matrix(1:9, ncol = 3)
> M
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> M = M[, 3:1]
> M
     [,1] [,2] [,3]
[1,]    7    4    1
[2,]    8    5    2
[3,]    9    6    3
Run Code Online (Sandbox Code Playgroud)

C++使用Eigen时我可以用循环来做

Eigen::MatrixXd m1(3, 3);
Eigen::MatrixXd m2(3, 3);
m1 << 1, 4, 7,
      2, 5, 8,
      3, 6, 9;

for (int i = 0; i < 3; i++){
    m2.col(i) =  m1.col(2 - i);
}

return m2;
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?我也查看了Eigen::Array文档,但没有找到任何有用的东西.

谢谢,马可

And*_*rew 6

尝试m1.rowwise().reverse()类似地使用colwise()行反转.