【发布时间】:2018-02-19 17:53:17
【问题描述】:
首先是样本数据
set.seed(123)
dat <- tibble(x = sample(-10:10, size = 11,replace = T))
# A tibble: 11 x 1
x
<int>
1 -4
2 6
3 -2
4 8
5 9
6 -10
7 1
8 8
9 1
10 -1
11 10
我有一个初始值为 2 的变量 y。我想通过在给定时间步中将 x 添加到 y 来计算 y 的最终值:
y[i] = y[i-1] + x[i]
dat %>% mutate(y = accumulate(x, ~ .x + .y, .init = 2)[-1])
# A tibble: 11 x 2
x y
<int> <dbl>
1 -4 -2
2 6 4
3 -2 2
4 8 10
5 9 19
6 -10 9
7 1 10
8 8 18
9 1 19
10 -1 18
11 10 28
但是,我要强加的条件是,在给定的时间步长内,y 不能 > 10 或为负数。如果 y > 10, 10 并且如果 y
# A tibble: 11 x 2
x y y1
<int> <dbl>
1 -4 -2 0 (-2 converted to 0)
2 6 4 6
3 -2 2 4
4 8 10 10 (12 converted to 10)
5 9 19 10 (19 converted to 10)
6 -10 9 0
7 1 10 1
8 8 18 9
9 1 19 10
10 -1 18 9
11 10 28 10 (19 converte to 10)
【问题讨论】:
-
老兄。您已将列命名为
x和y,此时,accumulate 使用几乎相同的.x和 .y作为参数。这是一个非常令人困惑的例子。