如果超过阈值,我如何使用cumsum返回索引?
v <- c(1,5,7,9,10,14,16,17)
Threshold <- 10
该函数将返回3,因为累积和将大于10,这将提供e索引3作为结果。
答案 0 :(得分:6)
我们可以使用which
which(cumsum(v)>Threshold)[1]
#[1] 3
或which.max
which.max(cumsum(v)>Threshold)
#[1] 3
或者@nicola评论findInterval
是另一种选择。优点是它是矢量化的,可以用于一次检查多个阈值。
findInterval(Threshold,cumsum(v))+1
#[1] 3
findInterval(c(10,49), cumsum(v))+1
#[1] 3 7