2017-11-16 7 views
1

によって空間行列は、Iは行列空間にいくつかの場所1、2、3、及び4順序インデックス

df<-matrix(data=c(0.00, 4.69, 12.63, 2.99, 4.69, 0.00, 17.30, 5.15, 12.63, 17.30, 0.00, 13.72, 2.99, 5.15, 13.72, 0.00), ncol=4) 
colnames(df)<-c(seq(1:4)) 
rownames(df)<-c(seq(1:4)) 
df 

# 1  2  3  4 
#1 0.00 4.69 12.63 2.99 
#2 4.69 0.00 17.30 5.15 
#3 12.63 17.30 0.00 13.72 
#4 2.99 5.15 13.72 0.00 

を有し、Iは各スペース列の順位の降順でこの行列を注文したい、そうなるだろう

私はこれをどのように達成することができますか?ありがとう。

答えて

1

我々はrankを使用することができますし、それはコラムを通じて、我々はループ(MARGIN=2apply)各列の必要に応じて

apply(df, 2, rank) 
+1

@Sotosはい、私はそれとは違って書く:=) – akrun

+0

パッケージ 'matrixstats'の効率についてはわかりません。たぶん私は時間が許可するときにいくつかのベンチマークを行うでしょう – Sotos

+1

@Sotosそれは行列のための非常に具体的なように速くする必要があります – akrun

1

あなたが

library(matrixStats) 

t(colRanks(df)) 

すなわち、matrixstatsパッケージからcolRanksを使用することができますこれは、

 [,1] [,2] [,3] [,4] 
[1,] 1 2 2 2 
[2,] 3 1 4 3 
[3,] 4 4 1 4 
[4,] 2 3 3 1 
関連する問題