【发布时间】:2017-03-04 10:43:00
【问题描述】:
我有一个关于在向量中查找索引值的问题。
假设我有一个向量如下:
vector <- c(1,2,4,6,8,10)
而且,假设我的值为“5”。我想在“向量”中找到最大索引,使其小于或等于值 5。在上面的示例中,该索引为 3(因为 4 小于或等于 5)。同样,如果我有一个向量,例如:
vector <- c(1,2,4,5,6,8,10)
如果我要找到一个小于或等于 5 的值,那么这个索引现在将是 4 而不是 3。
不过,我也想找出这个索引出现的first 和last 时间。例如,如果我有一个向量,例如:
vector <- c(1,1,2,2,4,5,5,5,5,6,8,10)
那么这个索引第一次出现是6,这个索引最后一次出现是9。
是否有一种简短的单行方法可以让我执行此任务?到目前为止,我一直在使用函数 max(which(....)),但是我发现这种方法对于大型数据集来说效率极低,因为它实际上会列出数百/数千个值,所以我想找到一个如果可能的话,更有效的方法可以放在一行中。
提前致谢。
【问题讨论】:
-
如果
vector已排序,请参阅?findInterval——使用“left.open = TRUE”调用一次,使用“left.open = FALSE”调用一次应该给出两个索引(加上一个if的一些操作将<与<=区别开来