R中带条件的Cumsum

R中带条件的Cumsum,r,loops,if-statement,dplyr,cumsum,R,Loops,If Statement,Dplyr,Cumsum,我想在R中对值列表执行此excel操作: =如果($H2+$G3>0;$H2+$G3;0) 数据: d <- c(0.007084, 0.000037, -0.400000, -0.400000, 0.000033, 0.000467, 0.001167, 0.000363) d% 选择(-grp) 应该很简单,但由于某种原因我不能让它工作 循环(且速度较慢)是cumsum的替代方法,即Reduce(`+`,x,accumulate=TRUE)。但是,这种Reduce方法可以修改

我想在R中对值列表执行此excel操作

=如果($H2+$G3>0;$H2+$G3;0)

数据:

d <- c(0.007084, 0.000037, -0.400000, -0.400000, 0.000033, 0.000467, 0.001167, 0.000363)
d%
选择(-grp)
应该很简单,但由于某种原因我不能让它工作

循环(且速度较慢)是
cumsum
的替代方法,即
Reduce(`+`,x,accumulate=TRUE)
。但是,这种
Reduce
方法可以修改为重置累计金额:

Reduce(function(x, y) if (x + y > 0) x + y else 0, d, accumulate = TRUE)
d1 <- d %>%
  group_by(grp = cumsum(lag(cumsum(replace(values, is.na(values), 0.000000)) < 0.000000, default = TRUE))) %>%
  mutate(calc = cumsum(replace(values, is.na(values), 0.000000)), calc =     replace(calc, calc < 0.000000, 0.000000)) %>%
  ungroup() %>%
  select(-grp)
Reduce(function(x, y) if (x + y > 0) x + y else 0, d, accumulate = TRUE)