【问题标题】:Is there an easy way to flip a matrix (horizontal or vertical)? [duplicate]有没有一种简单的方法来翻转矩阵(水平或垂直)? [复制]
【发布时间】:2020-09-13 21:02:01
【问题描述】:

在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

【问题讨论】:

    标签: r matrix


    【解决方案1】:

    我认为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
    

    【讨论】:

    • 哇,和 MATLAB 的函数名一样!!!
    【解决方案2】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-27
      • 1970-01-01
      • 1970-01-01
      • 2016-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多