Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何反转矩阵中的行?_R_Matrix - Fatal编程技术网

R 如何反转矩阵中的行?

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

我试图从矩阵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
谢谢你的帮助!仍在学习基础知识

我们可以将
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

m
m[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,]
的解决方案应该更有效。如果你把它作为答案贴出来,我会投赞成票;-)