Это похоже на алгоритм, который вы описываете, хотя из вашего описания трудно сказать, какими должны быть значения в первом столбце.
Вот ваши данные в матричной форме:
dev_costs <- t(matrix(c(1:4, 4:7, 8:9, 1:2), nrow = 4))
dev_costs
#> [,1] [,2] [,3] [,4]
#> [1,] 1 2 3 4
#> [2,] 4 5 6 7
#> [3,] 8 9 1 2
Мы можем легко составить кумулятивную сумму строк следующим образом:
cum_dev <- t(apply(dev_costs, 1, cumsum))
Затем итеративное l oop для завершения алгоритма:
answer <- cum_dev
for(i in seq(ncol(cum_dev))[-1])
{
answer[,i] <- 0.4 * (cum_dev[,i] - rowSums(answer[,1:(i-1), drop = FALSE]))
}
Давая нам
answer
#> [,1] [,2] [,3] [,4]
#> [1,] 1 0.8 1.68 2.608
#> [2,] 4 2.0 3.60 4.960
#> [3,] 8 3.6 2.56 2.336
Создано в 2020-03-06 пакетом Представить (v0.3.0)