gpt4 book ai didi

r - 在 R 中的矩阵中找到最大值

转载 作者:行者123 更新时间:2023-12-02 09:31:45 24 4
gpt4 key购买 nike

我在 R 中处理一个 230 x 230 的矩阵,我想提取矩阵上的 10 个(或除 1 以外的任何其他数字)最大输入,包括它们的位置和值。

额外的问题是这是一个相似矩阵,所以我在对角线上有 1,当然我想将其排除在最大搜索之外。

对此有什么想法或命令吗?

最佳答案

一般来说,执行此操作的一种巧妙方法是使用未充分利用的 arrayInd 函数,它为您提供普通 jane 向量位置的行和列位置。 which(..., arr.ind = TRUE) 就是这样做的。以下是您可能会怎么做:

## creating a random 230x230 matrix
n <- 230;
set.seed(1);
m <- matrix(sample.int(100000, n*n, replace = TRUE), n, n);
diag(m) <- 1;

## function to return n largest values and position for matrix m
nlargest <- function(m, n, sim = TRUE) {
mult <- 1;
if (sim) mult <- 2;
res <- order(m)[seq_len(n) * mult];
pos <- arrayInd(res, dim(m), useNames = TRUE);
list(values = m[res],
position = pos)
}

diag(m) <- NA;
nlargest(m, 10);
# $values
# [1] 1 2 11 12 12 12 13 18 21 22
#
# $position
# row col
# [1,] 59 95
# [2,] 178 202
# [3,] 160 34
# [4,] 83 151
# [5,] 150 194
# [6,] 18 225
# [7,] 13 38
# [8,] 206 182
# [9,] 89 22
#[10,] 142 99

关于r - 在 R 中的矩阵中找到最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32544566/

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