获得矩阵条目的排名?

Dar*_*ick 3 r matrix rank

假设一个矩阵:

> a <- matrix(c(100, 90, 80, 20), 2, 2)
> a
     [,1] [,2]
[1,]  100   80
[2,]   90   20
Run Code Online (Sandbox Code Playgroud)

假设我想将矩阵的元素转换为rank:

>rank.a <- rank(a)
> rank.a
[1] 4 3 2 1
Run Code Online (Sandbox Code Playgroud)

这返回一个向量,即矩阵结构丢失.是否可以对矩阵进行排序,使输出具有以下形式:

     [,1] [,2]
[1,]   4    2 
[2,]   3    1
Run Code Online (Sandbox Code Playgroud)

Rei*_*son 6

@ EDi答案的替代方法是复制a然后将输出rank(a)直接分配到以下副本的元素中a:

> a <- matrix(c(100, 90, 80, 20), 2, 2)
> rank.a <- a
> rank.a[] <- rank(a)
> rank.a
     [,1] [,2]
[1,]    4    2
[2,]    3    1
Run Code Online (Sandbox Code Playgroud)

这样可以通过查询输入矩阵的尺寸来避免重建矩阵.

请注意(如评论中提到的@Andrie)a只有在想要保留原文时才需要复制a.需要注意的要点是,因为a已经是合适的尺寸,我们可以把它当作一个载体和替换的内容a与队伍的载体a.