在R的Cumsum传染媒介的

hei*_*man 1 r dataframe cumsum

当超过阈值时,如何使用cumsum返回索引?

v <- c(1,5,7,9,10,14,16,17)
Threshold <- 10
Run Code Online (Sandbox Code Playgroud)

该函数将返回3,因为累积和将仅大于10,这提供了e索引3作为结果.

akr*_*run 6

我们可以用 which

 which(cumsum(v)>Threshold)[1]
 #[1] 3
Run Code Online (Sandbox Code Playgroud)

要么 which.max

 which.max(cumsum(v)>Threshold)
 #[1] 3
Run Code Online (Sandbox Code Playgroud)

或者@nicola评论findInterval是另一种选择.它的优点是矢量化,可用于一次检查多个阈值.

 findInterval(Threshold,cumsum(v))+1
 #[1] 3
 findInterval(c(10,49), cumsum(v))+1
 #[1] 3 7
Run Code Online (Sandbox Code Playgroud)