Я пытаюсь выяснить, есть ли способ векторизации выполненных мной вычислений.Я искал этот ответ и не смог найти то, что мне нужно.
У меня есть вектор темпов роста.Каждый представляет один период (один год в моем случае).Я хочу применить этот вектор к некоторой основной сумме.Затем, после того, как первая скорость роста будет применена к принципалу, используйте результат первой итерации и примените второй элемент роста к новому значению.
Вот некоторый код для воспроизведения (все в base
):
# Vector of interest or inflation rates
RateVector <- c(0.02, 0.03, 0.04, 0.05, 0.06, 0.05, 0.04, 0.03, 0.02, 0.01) # forecasted rates
Principal <- data.frame(Principal = 1000000) # actual value of indicator in most recent period as data frame (list)
Вот моя попытка векторизации:
sapply(Principal, "*", 1 + cumsum(RateVector))
Проблема в том, что функция sapply
не сохраняет новую сумму и вместо этого применяет вектор ставок ктот же начальный принципал.Это на самом деле то, что я ожидал от этого кода.Я не знаю, как сохранить новое значение после каждой итерации от элемента к элементу.
Вот как я решил проблему, используя цикл:
AmountVector <- Principal # initialize output vector
# Compound growth growth calculation loop
for(i in 1:length(RateVector)){
Principal = Principal * (1 + RateVector)[i]
AmountVector <- rbind(AmountVector,Principal)
}
# Print result
AmountVector