【问题标题】:Find Minimum positive value in each row (exclude 0)在每一行中查找最小正值(不包括 0)
【发布时间】:2017-12-11 20:34:37
【问题描述】:

我目前正在使用一个矩阵,我想在每一行中找到最低的正值。

使用 apply(my.matrix,1,min) 将不起作用,因为输出将始终为 0...

有没有办法找到除 0 以外的最小值?

【问题讨论】:

    标签: r min


    【解决方案1】:

    您可以使用匿名函数来做到这一点。

    apply(my.matrix, 1, FUN = function(x) {min(x[x > 0])})
    

    【讨论】:

    • 亲爱的 shujaa, 非常感谢!它工作得很好! :) 干杯,J
    • 不错。 min 也有一个 na.rm = TRUE 选项,这可能很有用。如果负值也很重要,FUN 右侧的 min(abs(x[x != 0]), na.rm = TRUE) 之类的东西可能会奏效。
    【解决方案2】:

    你方法的这种变化对我有用:

    apply(my.matrix, 1, FUN=function(x) {min(x>0)})
    

    【讨论】:

    • x > 0 是一个布尔向量,只有 TRUE 和 FALSE,当你寻找它的最小值时,它被强制为 1 表示 TRUE 和 0 表示 FALSE。如果有任何数字 0 或更少,此答案将返回 0,否则返回 1。
    猜你喜欢
    • 2021-07-01
    • 2015-10-01
    • 2014-07-09
    • 2021-10-27
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多