2016-10-14 3 views
-2

私はこのポスト sort matrixを読んでいましたが、同等のものがあれば興味がありました。行列の列をdata.tableパッケージ内で独立してソートする方法はありますか?R

mat <- matrix(c(45,34,1,3,4325,23,1,2,5,7,3,4,32,734,2),ncol=3) 

私が何かをしたいと思います:

sort <- matrix(c(1,3,34,45,4325,1,2,5,7,23,2,3,4,32,734),ncol=3) 

感謝を!

+1

をおそらくよりdata.table方法あなただけ.. 'DT = as.data.table(マット)したいですか。 dt [、lapply(dt、sort)] ' – user20650

+0

setkeyやorderを使ってdata.tablesをソートするのはとても簡単です。 – Roland

+0

コマンドの注文は質問に答えません。 @ user20650の提案があります。 – unmark1

答えて

2
mat <- matrix(c(45,34,1,3,4325,23,1,2,5,7,3,4,32,734,2),ncol=3) 

library(data.table) 
DT <- as.data.table(mat) 
#  V1 V2 V3 
#1: 45 23 3 
#2: 34 1 4 
#3: 1 2 32 
#4: 3 5 734 
#5: 4325 7 2 

DT[, lapply(.SD, sort, method = "radix")] 
#  V1 V2 V3 
#1: 1 1 2 
#2: 3 2 3 
#3: 34 5 4 
#4: 45 7 32 
#5: 4325 23 734 
+0

私はこの解決策がより "data.table"であると信じています。どうも! – unmark1

+0

ローランド;私の古いlappieでテストしましたが、速度が似ています(少し遅いかもしれませんが) 'lapply(.SD'ではなく' lapply(DT)'ではなく、 'lapply(SSD')を使用することの利点についてdata.tableユーザではないそれは 'by ='が必要な例にもっと拡張できるからです。 – user20650

1

あなただけapply、そのようなことができます:

apply(mat,2,sort) 
関連する問題