构建一个累积和大于或等于某个常数的函数

build a function for which the cumulative sum is bigger or equal to some constant

我有一个包含 n 个元素的向量。元素的总和是 1。我想要一个函数,它将向量和 return 向量元素的数量作为输入,使得它们的总和大于或等于 0.80。 例如,考虑以下向量:

A <- as.matrix(c(0.5, 0.2, 0.15, 0.10, 0.05)) 

函数必须 return 3,因为 0.5 + 0.2 + 0.15 >= 0.80

csum_index <- function(v, t=0.8) which(cumsum(v) >= t)[1]

上述函数returns向量v的第一个索引,其元素的累积和大于或等于tt 的默认值为 0.8。

csum_index(A)
#[1] 3
csum_index(A,0.9)
#[1] 4