R 如何反转矩阵中的行?
我试图从矩阵m中反转行的顺序,而不是像下面这样得到:R 如何反转矩阵中的行?,r,matrix,R,Matrix,我试图从矩阵m中反转行的顺序,而不是像下面这样得到: n <- rbind(m) n [,1] [,2] [,3] [,4] [,5] [1,] 1 2 3 4 5 [2,] 6 7 8 9 10 [3,] 11 12 13 14 15 [4,] 16 17 18 19 20 [5,] 21 22 23 24 25 谢谢你的帮助!仍在学习基础知识 我们可以将a
n <- rbind(m)
n
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
[3,] 11 12 13 14 15
[4,] 16 17 18 19 20
[5,] 21 22 23 24 25
谢谢你的帮助!仍在学习基础知识 我们可以将apply()
和rev()
组合到矩阵n
并重新排列条目:
n <- matrix(1:25, 5, byrow = TRUE)
apply(n,2,rev)
# [,1] [,2] [,3] [,4] [,5]
#[1,] 21 22 23 24 25
#[2,] 16 17 18 19 20
#[3,] 11 12 13 14 15
#[4,] 6 7 8 9 10
#[5,] 1 2 3 4 5
这只是颠倒了矩阵中行的顺序。我们可以将apply()
和rev()
组合到矩阵n
,并重新排列条目:
n <- matrix(1:25, 5, byrow = TRUE)
apply(n,2,rev)
# [,1] [,2] [,3] [,4] [,5]
#[1,] 21 22 23 24 25
#[2,] 16 17 18 19 20
#[3,] 11 12 13 14 15
#[4,] 6 7 8 9 10
#[5,] 1 2 3 4 5
这只是颠倒矩阵中行的顺序。我能想到的颠倒矩阵
m
行顺序的最简单方法是:
m[nrow(m):1, ]
比较两个选项的一些基准
m <- matrix(rnorm(50000*100), ncol=100)
library(microbenchmark)
microbenchmark(n <- m[nrow(m):1, ], n <- apply(m, 2, rev), unit="relative")
# expr min lq mean median uq max neval cld
# n <- m[nrow(m):1, ] 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 100 a
# n <- apply(m, 2, rev) 2.947735 3.090831 2.878977 3.143367 2.954659 1.816428 100 b
m我能想到的颠倒矩阵m
行顺序的最简单方法是:
m[nrow(m):1, ]
比较两个选项的一些基准
m <- matrix(rnorm(50000*100), ncol=100)
library(microbenchmark)
microbenchmark(n <- m[nrow(m):1, ], n <- apply(m, 2, rev), unit="relative")
# expr min lq mean median uq max neval cld
# n <- m[nrow(m):1, ] 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 100 a
# n <- apply(m, 2, rev) 2.947735 3.090831 2.878977 3.143367 2.954659 1.816428 100 b
mm[nrow(m):1,]
?m[nrow(m):1,]
?不确定它会比只n[nrow(n):1,]
更有效……谢谢!你能解释一下apply()在做什么吗?对不起,还在学基础知识。@Cath我想你是对的。使用n[nrow(n):1,]
的解决方案应该更有效。如果你把它作为答案贴出来,我会投赞成票;-)我不确定这会比仅仅n[nrow(n):1,]
更有效……谢谢!你能解释一下apply()正在做什么吗?对不起,还在学基础知识。@Cath我想你是对的。使用n[nrow(n):1,]
的解决方案应该更有效。如果你把它作为答案贴出来,我会投赞成票;-)