2016-03-10 66 views
1

我有一個有n個元素的向量。元素的總和爲1.我想要一個函數,它將向量作爲輸入並返回向量元素的數量,使得它們的總和大於或等於0.80。 例如,考慮以下矢量:建立累積和大於或等於某個常數的函數

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

該函數具有返回3,因爲0.5 + 0.2 + 0.15> = 0.80

回答

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

上述函數返回一個向量v的第一索引其元素的累積總和大於或等於tt的默認值是0.8。

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

謝謝@RHertel! –

相關問題