【问题标题】:Find the index of minimum non negative value in R在R中找到最小非负值的索引
【发布时间】:2015-04-18 01:42:47
【问题描述】:

假设一个数字向量x <- c(-3,2,1,-2, 4,-1,-5)
x 中的最小非负值是1,所以索引/位置/答案应该是3
我们如何使用任何函数来做到这一点?

(注意:函数which.min,在上述情况下,给出答案/索引7,这是最小值(但不是非负数))

【问题讨论】:

    标签: r data-manipulation


    【解决方案1】:

    你可以使用

    which.max(1 / x)
    # [1] 3
    

    【讨论】:

      【解决方案2】:

      试试:

      which(x==min(x[x>0]))
      #[1] 3
      

      它告诉R 搜索等于非负值最小值的x
      编辑:如果有多个最小值,它将显示所有他们,所以在这种情况下,你可以做min(which(x==min(x[x>0])))

      注意:在这种情况下,您不能使用which.min,因为which.min(x[x>0]) 会为您提供向量x[x>0](@ 987654328@这里)

      【讨论】:

        【解决方案3】:

        要找到满足更一般条件的x 的最小值的(第一个)索引,我建议使用自定义函数

        which_min_cond <- function(x, cond) {
            seq_along(x)[cond][which.min(x[cond])]
        }
        

        其中cond 可以是任何条件,例如我们的例子中的x &gt;= 0

        which_min_cond(x, x >= 0)
        # [1] 3
        

        【讨论】:

          猜你喜欢
          • 2021-04-04
          • 1970-01-01
          • 1970-01-01
          • 2013-03-07
          • 2021-11-10
          • 2019-06-24
          • 2014-10-26
          • 1970-01-01
          • 2018-06-02
          相关资源
          最近更新 更多