将矩阵的所有元素下移R

时间:2018-11-18 19:27:37

标签: r matrix

我正在尝试使用R将某个矩阵的所有元素移位1。我有一个相当大的10x10矩阵,需要多次执行此操作。我不确定如何高效地执行此操作。例如,我有:

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

目标是使矩阵看起来像这样:

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

谢谢!

2 个答案:

答案 0 :(得分:3)

这是一个选择

mat <- matrix(1:9, nrow = 3)
matrix(c(mat[length(mat)], mat[-length(mat)]),
       nrow = dim(mat)[1])
#     [,1] [,2] [,3]
#[1,]    9    3    6
#[2,]    1    4    7
#[3,]    2    5    8

c(mat[length(mat)], mat[-length(mat)])将取自mat中的最后一个元素,并将其放在第一个位置。

我们也可以做

mat[] <- c(mat[length(mat)], mat[-length(mat)])

答案 1 :(得分:0)

我认为 binhf 包的 shift 函数给出了一个易于理解的语句,可以允许在任一方向上任意移位:

library(binhf)
mat <- matrix(1:9, nrow = 3)

matrix(shift(mat,places=1),nrow=dim(mat)[1])

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

或简单地:

matrix(shift(mat,1),nrow=dim(mat)[1])