r-有没有一种简单的方法来翻转矩阵(水平或垂直)



在Matlab中,我知道有一些函数可以翻转矩阵,比如左右翻转(水平(或上下翻转(垂直(,但我不知道R.中是否有类似的函数

例如,假设我们有一个矩阵m <- matrix(1:12,nrow = 3),我们想要

  • 水平翻转获得mh
[,1] [,2] [,3] [,4]
[1,]   10    7    4    1
[2,]   11    8    5    2
[3,]   12    9    6    3
  • 垂直翻转以获得mv
[,1] [,2] [,3] [,4]
[1,]    3    6    9   12
[2,]    2    5    8   11
[3,]    1    4    7   10

我认为pracma包可以帮助您

mh <- pracma::fliplr(m)

mv <- pracma::flipud(m)

使得

> mh
[,1] [,2] [,3] [,4]
[1,]   10    7    4    1
[2,]   11    8    5    2
[3,]   12    9    6    3
> mv
[,1] [,2] [,3] [,4]
[1,]    3    6    9   12
[2,]    2    5    8   11
[3,]    1    4    7   10

我们可以将序列反转为列、行的索引,以获得翻转的数据集

m[, ncol(m):1]
#     [,1] [,2] [,3] [,4]
#[1,]   10    7    4    1
#[2,]   11    8    5    2
#[3,]   12    9    6    3
m[nrow(m):1, ]
#     [,1] [,2] [,3] [,4]
#[1,]    3    6    9   12
#[2,]    2    5    8   11
#[3,]    1    4    7   10

最新更新