gpt4 book ai didi

r - R中的条件cumsum?

转载 作者:行者123 更新时间:2023-12-04 11:04:24 25 4
gpt4 key购买 nike

您好,这是对此处提出的问题的扩展: Conditional cumulative sum

假设我有以下向量。我想计算零内 block 的运行总数。

d <- c(0,0,0,1,3,4,5,-1,2,3,-5,8,0,0,-2,-3,3,5,0,0,0,-1,-1,-1,-1);

Ans d <- c(0,0,0,1,4,8,13,12,14,17,12,20,0,0,-2,-5,-2,3,0,0,0,-1,-2,-3,-4).

我想以矢量化的方式进行,因为我的矢量相当大。到目前为止,我一直在尝试使用 rle 来实现这一目标,但没有取得太大成功。

非常感谢。

最佳答案

这会起作用:

aux <- split(d, cumsum(d == 0))
v <- unlist(sapply(aux, cumsum))
1 2 31 32 33 34 35 36 37 38 39 310 4 51 52 53 54 55 6 7 81 82 83 84 85
0 0 0 1 4 8 13 12 14 17 12 20 0 0 -2 -5 -2 3 0 0 0 -1 -2 -3 -4
as.vector(v)
[1] 0 0 0 1 4 8 13 12 14 17 12 20 0 0 -2 -5 -2 3 0 0 0 -1 -2 -3 -4

这里 as.vector() 只是隐藏了元素的数量。

关于r - R中的条件cumsum?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11505056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com