Joh*_*nes 49 r rotation matrix
我在R中有一个矩阵,如下所示:
|1|2|3|
|1|2|3|
|1|2|3|
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法可以将整个矩阵顺时针旋转90度以获得这些结果?
|1|1|1|
|2|2|2|
|3|3|3|
Run Code Online (Sandbox Code Playgroud)
并再次旋转90度:
|3|2|1|
|3|2|1|
|3|2|1|
Run Code Online (Sandbox Code Playgroud)
?
Mat*_*erg 91
t 不旋转条目,它沿对角线翻转:
x <- matrix(1:9, 3)
x
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
t(x)
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
## [3,] 7 8 9
Run Code Online (Sandbox Code Playgroud)
R矩阵顺时针旋转90度:
您还需要在转置之前反转列:
rotate <- function(x) t(apply(x, 2, rev))
rotate(x)
## [,1] [,2] [,3]
## [1,] 3 2 1
## [2,] 6 5 4
## [3,] 9 8 7
rotate(rotate(x))
## [,1] [,2] [,3]
## [1,] 9 6 3
## [2,] 8 5 2
## [3,] 7 4 1
rotate(rotate(rotate(x)))
## [,1] [,2] [,3]
## [1,] 7 8 9
## [2,] 4 5 6
## [3,] 1 2 3
rotate(rotate(rotate(rotate(x))))
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
Run Code Online (Sandbox Code Playgroud)
R矩阵90度逆时针旋转:
在反向之前进行转置与逆时针旋转相同:
foo = matrix(1:9, 3)
foo
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
foo <- apply(t(foo),2,rev)
foo
## [,1] [,2] [,3]
## [1,] 7 8 9
## [2,] 4 5 6
## [3,] 1 2 3
Run Code Online (Sandbox Code Playgroud)
Rol*_*and 27
m <- matrix(rep(1:3,each=3),3)
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 1 2 3
[3,] 1 2 3
t(m[nrow(m):1,])
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 2 2 2
[3,] 3 3 3
m[nrow(m):1,ncol(m):1]
[,1] [,2] [,3]
[1,] 3 2 1
[2,] 3 2 1
[3,] 3 2 1
t(m)[ncol(m):1,]
[,1] [,2] [,3]
[1,] 3 3 3
[2,] 2 2 2
[3,] 1 1 1
Run Code Online (Sandbox Code Playgroud)
将矩阵旋转180°的简单方法是:
m <- matrix(1:8,ncol=4)
# [,1] [,2] [,3] [,4]
# [1,] 1 3 5 7
# [2,] 2 4 6 8
rot <- function(x) "[<-"(x, , rev(x))
rot(m)
# [,1] [,2] [,3] [,4]
# [1,] 8 6 4 2
# [2,] 7 5 3 1
rot(rot(m))
# [,1] [,2] [,3] [,4]
# [1,] 1 3 5 7
# [2,] 2 4 6 8
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43340 次 |
| 最近记录: |