讓Mymat成為:
[/span>, 1] [。 2] [。 3] [,4]
[1,] 9. 39 7.32 2.92 11.17
[2,] 10。 16 12.85 3.23 10.81
[3,] 8. 56 5.21 12.62 11.05
這就是,
set.seed(1000)
mymat < -矩陣(round(runif(12, min=1。 max=15)。 2), nrow = 3, ncol = 4, byrow = TRUE)
我可以用arrayInd()獲得mymat的最大和最小元素的索引。但我需要的是,獲得矩陣所有元素的行-列索引,從最大的元素到最小的元素,我不知道如何得到它。
2 2 # index for max element which is 12.85 here
3 3 # index for next largest value1 4 # index for next largest value
.
.
.
uj5u.com熱心網友回復:
我們可以將matrix融化成長格式的data.frame,它默認回傳行和列的索引作為前兩列,最后一列是'value'。 現在,以desc結尾的順序排列'value'和選擇只有索引列是比較容易的
library(reshape2)
library(dplyr)
melt(mymat)%>%
arrange(desc(value) %>%
select(-value)
輸出
Var1 Var2
1 2 2
2 3 3
3 1 4
4 3 4
5 2 4
6 2 1
7 1 1
8 3 1
9 1 2
10 3 2
11 2 3
12 1 3
如果矩陣有dimnames屬性,melt會回傳第一列作為行/列名稱。 但是,如果我們想洗掉這些,那么將dimnames設定為NULL,例如
dimnames(mymat) <。 - list(paste0("r-">。 1。 3)。 paste0("c-", 1。 4))
dimnames(mymat) <- NULL
或者使用base R,用order創建一個矩陣元素的索引,用來排列row和col的索引
i1 <- order(-mymat)
cbind(row(mymat)[i1]。 col(mymat)[i1])
[,1] [, 2]
[1,] 2 2
[2,] 3 3
[3,] 1 4
[4,] 3 4
[5,] 2 4
[6,] 2 1
[7,] 1 1
[8,] 3 1
[9,] 1 2
[10,] 3 2
[11,] 2 3
[12,] 1 3
data
mymat < -結構(c(9。 39, 10.16, 8. 56, 7.32, 12.85, 5. 21, 2.92, 3.23,
12.62, 11. 17, 10.81, 11. 05), . Dim = 3:4)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/310842.html
標籤:
