У меня есть симметричная матрица mat
:R получают наивысшие ячейки x и их имена/имена в симметричной матрице?
A B C
A 1 . .
B . 1 .
C . . 1
И я хочу, чтобы вычислить два высших элементы. Теперь, так как это симметричная матрица Я думал использовать upper.tri
так:
mat.tri<-upper.tri(mat) # convert to upper tri
mat.ord<-order(mat.tri,na.last=TRUE,decreasing=TRUE)[1:2] # order by largest
a.ind<-which(mat%in%mat.tri[mat.ord]) # get absolute indices
r.ind<-arrayInd(a.ind,dim(mat)) # get relative indices
# get row/colnames using these indices
Так выше такой окольный способ делать вещи, и даже тогда выход имеет «дублирующие» строки в том, что они просто транспонировать. .
У кого-нибудь есть более интуитивный способ сделать это?
Спасибо.
Oh +1 очень хорошо. Я слишком занят чтением, чтобы обновить свой ответ. Я просто удалю его. –
Спасибо, что сделал трюк! –