Я думаю, что purrr::accumulate()
лучше подходит для этой задачи:
n <- 10 # Desired number of values
purrr::accumulate( .init = c(0L,1L), # Starting with (0,1)
rep(0,n), # Accumulate n times
~c(.x,sum(.x))[2:3] # (x,y) -> (x, y, x+y)[2:3]
) %>%
purrr::map_int( `[`, 1 ) # (x,y) -> x
# [1] 0 1 1 2 3 5 8 13 21 34 55
Ключ к этому решению - сохранять пары значений во время вызова accumulate()
: (0,1)
, (1,1)
, (1,2)
, et c., Поскольку вам нужны два предыдущих значения для вычисления нового.
После этого следует извлечение первого элемента каждой пары.