gpt4 book ai didi

在达到特定值时重置 cumsum

转载 作者:行者123 更新时间:2023-12-03 18:29:42 26 4
gpt4 key购买 nike

我要重置 cumsum在一个向量上,当它达到某个值时。

例如。对于以下向量:

v <- c(3, 5, 2, 5, 3, 4, 5, 3, 1, 4)

预期输出为:
c(0, 0, 10, 0, 0, 22, 0, 30, 0, 0)

reset <- 10我可以将任务减少到标记完整整数后的第一个值:
res <- cumsum(v)
resd <- res/reset
resd
# [1] 0.3 0.8 1.0 1.5 1.8 2.2 2.7 3.0 3.1 3.5

预期输出是这样的:
c(F, F, T, F, F, T, F, T, F, F) # or 
c(0, 0, 1.0, 0, 0, 2.2, 0, 3.0, 0, 0)

我需要一种快速的方法来计算其中一个。

最佳答案

我的(改进的)解决方案:

v <- c(3, 5, 2, 5, 3, 4, 5, 3, 1, 4)
res <- cumsum(v)
reset <- 10
resd <- res/reset
res[diff(c(0, floor(resd))) == 0] <- 0
print(res) #gives 0 0 10 0 0 22 0 30 0 0

编辑:现在是 v 中的第一个元素可以大于 10。

关于在达到特定值时重置 cumsum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37552095/

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