【发布时间】:2017-12-11 20:34:37
【问题描述】:
我目前正在使用一个矩阵,我想在每一行中找到最低的正值。
使用 apply(my.matrix,1,min) 将不起作用,因为输出将始终为 0...
有没有办法找到除 0 以外的最小值?
【问题讨论】:
我目前正在使用一个矩阵,我想在每一行中找到最低的正值。
使用 apply(my.matrix,1,min) 将不起作用,因为输出将始终为 0...
有没有办法找到除 0 以外的最小值?
【问题讨论】:
您可以使用匿名函数来做到这一点。
apply(my.matrix, 1, FUN = function(x) {min(x[x > 0])})
【讨论】:
min 也有一个 na.rm = TRUE 选项,这可能很有用。如果负值也很重要,FUN 右侧的 min(abs(x[x != 0]), na.rm = TRUE) 之类的东西可能会奏效。
你方法的这种变化对我有用:
apply(my.matrix, 1, FUN=function(x) {min(x>0)})
【讨论】:
x > 0 是一个布尔向量,只有 TRUE 和 FALSE,当你寻找它的最小值时,它被强制为 1 表示 TRUE 和 0 表示 FALSE。如果有任何数字 0 或更少,此答案将返回 0,否则返回 1。