我有一个非常大的方阵。我想找到一个有效的方法来获得一些" top"来自矩阵的(最小或最大)值,但保留行/列。使用较小的矩阵,我可以执行以下操作:
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]), ])
然而,如果矩阵非常大,这是不实际的。有更好,更有效的方式吗?
答案 0 :(得分:1)
您必须使用矩阵创建数据框,然后根据自己的喜好进行排序。
然后,最好的方法不是查看矩阵的顺序,而是创建数据框并订购它的最佳方法。
使用包data.table
,您可以快速,高效的方式创建数据帧:
m <- data.table(as.vector(m), as.vector(col(m)), as.vector(row(m)))
之后您订购数据
m <- m[ order(m[,1]), ]