gpt4 book ai didi

r - 以最快的方式使用数组索引按降序打印矩阵的排序元素

转载 作者:行者123 更新时间:2023-12-01 12:34:51 25 4
gpt4 key购买 nike

这似乎是一个简单的问题,但我无法快速解决这个问题。

假设我有一个矩阵,我想对这个矩阵进行排序并按降序存储元素的索引。有没有快速的方法来做到这一点?现在,我正在提取最大值,存储结果,将其更改为 -2,然后在 for 循环中提取下一个最大值。这可能是最低效的方法。

我的问题实际上要求我处理 20,000 X 20,000 矩阵。内存不是问题。关于最快的方法的任何想法都会很棒。

例如,如果我有一个矩阵

>m<-matrix(c(1,4,2,3),2,2)
>m
[,1] [,2]
[1,] 1 2
[2,] 4 3

我希望结果以降序表示数字:

 row  col val
2 1 4
2 2 3
1 2 2
1 1 1

最佳答案

这是一个可能的data.table解决方案

library(data.table)
rows <- nrow(m) ; cols <- ncol(m)
res <- data.table(
row = rep(seq_len(rows), cols),
col = rep(seq_len(cols), each = rows),
val = c(m)
)
setorder(res, -val)
res
# row col val
# 1: 2 1 4
# 2: 2 2 3
# 3: 1 2 2
# 4: 1 1 1

编辑:基础 R 替代方案

res <- cbind(
row = rep(seq_len(rows), cols),
col = rep(seq_len(cols), each = rows),
val = c(m)
)
res[order(-res[, 3]),]
# row col val
# [1,] 2 1 4
# [2,] 2 2 3
# [3,] 1 2 2
# [4,] 1 1 1

关于r - 以最快的方式使用数组索引按降序打印矩阵的排序元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30631181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com