私は非常に大きな正方行列を持っています。 行列からいくつかの「最上位」(最小または最大)の値を取得する効果的な方法を見つけたいと思いますが、行/列は保持しています。より小さな行列では、私は以下を行うことができます:
m <- matrix(rnorm(100), ncol=10, nrow=10)
m <- cbind(as.vector(m), as.vector(col(m)), as.vector(row(m)))
head(m[ order(m[,1]), ])
しかし、行列が非常に大きい場合、これは実用的ではありません。より良い、より効率的な方法がありますか?
回答:
回答№1は1あなたは行列を使ってデータフレームを作成し、それからあなたの好みとして注文する必要があります。
そして、最良の方法は、マトリックスの順序を見てはいけませんが、データフレームを作成して注文する最良の方法は何ですか。
パッケージの使用 data.table
高速かつメモリ効率の良い方法でデータフレームを作成することができます。
m <- data.table(as.vector(m), as.vector(col(m)), as.vector(row(m)))
その後、データを注文します
m <- m[ order(m[,1]), ]