【问题标题】:R: How can we choose minimum in rows of a matrix when there are many minimums?R:当有很多最小值时,我们如何在矩阵的行中选择最小值?
【发布时间】:2021-09-04 06:04:23
【问题描述】:

假设我有一个 3*4 矩阵如下:

M=[0.01, 0.02, 0.03, 0.01

0.04, 0.03, 0.02, 0.02

46、45、45、48]

为了找到最小值的频率并找出 M 中哪一列的最小值更多,我使用:

表(应用(M,1,which.min))

但由于每行有两个相等的最小值,因此该函数仅将第一列视为最小值。

现在,我正在尝试使用一个函数来计算所有矩阵的最小值相等,例如,在 30% 的情况下(每一行都是一个情况),第 1 列和第 3 列是最小值。

【问题讨论】:

    标签: r matrix


    【解决方案1】:

    您可以将一行中所有最小的列号作为一个字符串返回,并使用table来计算频率。

    cnt <- table(apply(M,1,function(x) paste0(which(x == min(x)), collapse = '-')))
    

    要计算比例,您可以sort 计数并计算比例。

    prop.table(sort(cnt)) * 100
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-29
      • 2014-10-01
      • 2018-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      相关资源
      最近更新 更多