How to create self cumulating vector in R

前端 未结 2 411
盖世英雄少女心
盖世英雄少女心 2021-01-21 02:20

I think this is very easy but my R kung-fu is weak. I\'m trying to create a vector of itself in a cumulative way. This code works but I\'d like something much more elegant and a

相关标签:
2条回答
  • 2021-01-21 02:26

    Did you mean cumsum() ?

    > a <- c(4,4,5,1,9)
    > a <- a[order(-a[])]            # just calling sort is shorter too
    > k <- a[1:length(a)]/sum(a)     # long way  
    > k 
    [1] 0.391304 0.217391 0.173913 0.173913 0.043478
    > k <- a/sum(a)                  # same, but shorter
    > k  
    [1] 0.391304 0.217391 0.173913 0.173913 0.043478
    > ck <- cumsum(k) 
    > ck  
    [1] 0.39130 0.60870 0.78261 0.95652 1.00000 
    >   
    

    Edit I overlooked another simplification:

    > a <- c(4,4,5,1,9)
    > ck <- cumsum( sort(a, decr=TRUE) / sum(as) ) 
    > ck  
    [1] 0.39130 0.60870 0.78261 0.95652 1.00000 
    >   
    

    You want sort() here rather than order() coupled with indexing.

    0 讨论(0)
  • 2021-01-21 02:47

    Bing is my friend...I found the cumsum() function.

    0 讨论(0)
提交回复
热议问题