【问题标题】:find index of minimum value greater than 0查找最小值大于 0 的索引
【发布时间】:2017-04-27 20:25:50
【问题描述】:

我见过this,但我想知道为什么它在我的情况下不起作用

我有这个向量:

num<-c(0.000000, 4.220190, 1.421267, 1.004988, 5.060632, 1.100000, 3.744329, 5.728001, 4.707441, 4.100000, 5.200961, 5.060632, 2.282542
  ,1.676305, 0.509902, 0.781025, 2.968164, 5.916925, 5.235456, 5.371220)

然后我试图找到大于 0 的最小值,即0.509902 所以我有

which.min(num > 0)

但它给了我

1

0.00的索引

【问题讨论】:

  • 它给你 1 因为你正在搜索 TRUE 和 FALSE 之间的最小值(一旦你做了 num &gt; 0 就被强制为逻辑),这是你的第一个元素 FALSE。
  • 不是完整的副本,因为它没有显示如何找到索引,但 here it is just for reference

标签: r


【解决方案1】:

我们可以用NA替换小于或等于0的值并使用which.min

i1 <- which.min(replace(num, num<=0, NA))
i1
#[1] 15

或者稍微紧凑的方式是

which.min(num*NA^(num <=0))
#[1] 15


num[i1]
#[1] 0.509902

【讨论】:

  • 也可以考虑order(num)[num != 0][1]
猜你喜欢
  • 1970-01-01
  • 2014-11-16
  • 1970-01-01
  • 2013-06-01
  • 2016-12-09
  • 2020-02-21
  • 2021-06-23
  • 2021-08-17
  • 1970-01-01
相关资源
最近更新 更多