如何反转R中的矩阵?

时间:2012-02-03 21:33:29

标签: r

我有一个简单的矩阵,如:

> a = matrix(c(c(1:10),c(10:1)), ncol=2)
> a
      [,1] [,2]
 [1,]    1   10
 [2,]    2    9
 [3,]    3    8
 [4,]    4    7
 [5,]    5    6
 [6,]    6    5
 [7,]    7    4
 [8,]    8    3
 [9,]    9    2
[10,]   10    1

我想得到这个结果:

      [,1] [,2]
 [1,]   10    1
 [2,]    9    2
 [3,]    8    3
 [4,]    7    4
 [5,]    6    5
 [6,]    5    6
 [7,]    4    7
 [8,]    3    8
 [9,]    2    9
[10,]    1    10

矩阵的完全相反。我怎么才能得到它? 感谢

3 个答案:

答案 0 :(得分:26)

使用rev

尝试apply
> a <- matrix(c(1:10,10:1), ncol=2)
> a
      [,1] [,2]
 [1,]    1   10
 [2,]    2    9
 [3,]    3    8
 [4,]    4    7
 [5,]    5    6
 [6,]    6    5
 [7,]    7    4
 [8,]    8    3
 [9,]    9    2
[10,]   10    1
> b <- apply(a, 2, rev)
> b
      [,1] [,2]
 [1,]   10    1
 [2,]    9    2
 [3,]    8    3
 [4,]    7    4
 [5,]    6    5
 [6,]    5    6
 [7,]    4    7
 [8,]    3    8
 [9,]    2    9
[10,]    1   10

答案 1 :(得分:21)

a[nrow(a):1,]
#       [,1] [,2]
#  [1,]   10    1
#  [2,]    9    2
#  [3,]    8    3
#  [4,]    7    4
#  [5,]    6    5
#  [6,]    5    6
#  [7,]    4    7
#  [8,]    3    8
#  [9,]    2    9
# [10,]    1   10

答案 2 :(得分:10)

这是一种方式:

a[, rev(seq_len(ncol(a)))]
      [,1] [,2]
 [1,]   10    1
 [2,]    9    2
 [3,]    8    3
 [4,]    7    4
 [5,]    6    5
 [6,]    5    6
 [7,]    4    7
 [8,]    3    8
 [9,]    2    9
[10,]    1   10