Рекурсивный цикл в R (с использованием Tidyverse) - PullRequest
1 голос
/ 08 апреля 2019

Я пытаюсь реализовать простой график амортизации, используя tidyverse вместо написания циклов. Я предполагаю, что есть способ сделать это с помощью Tidyverse. Самая близкая помощь, которую я получил, чтобы сделать это, была

Проблема, которую я пытаюсь решить, описана ниже

For Month 1, 
LoanRem = Loan
Beyond Month 1
LoanRem = Loan - Cumulative_Sum_Previous(Principal_Payments)

PrinPay[i] = A + ExtraPrinPay[i] - Int * ( Loan  - (PrinPay[1] + .. PrinPay[i-1] )

n = <constant> length of the payment scheme

A (Ежемесячный платеж), Int (Ежемесячная процентная ставка), Loan (Начальная сумма кредита) - все постоянные

ExtraPrinPay - вектор длины длины n.

Ближайшая ссылка, которую я получил, которая решает немного другую проблему, была по этой ссылке Рекурсивная функция с использованием dplyr

Cost <- 200000;
Down <- 0.2 * Cost;
Loan <- Cost - Down;
Int  <- 0.04 / 12;
TermY<- 6;
Term <- TermY;
A    <- Loan * Int * ( 1 + Int )^(Term) / ( ( 1 + Int )^(Term) - 1.0 );

LoanRem <- function(x,y,Epp,A=A,Int=Int,Loan=Loan) {
  return(A + Epp - Int * Loan - int * x);
}
# LoanRem = if_else(Mon==1,Loan,Loan-lag(LiqGain,1)),
# PrinPay = A + Curr(ExtraPrinPay) - Int * Loan - int * cumsum_1(PrinPay),
data <- data.frame(Mon=seq(1,6,1),ExtraPrinPay=0) %>%
        mutate(PrinPay=accumulate2(PrinPay,,Epp=ExtraPrinPay,.f=LoanRem,.init = 0))

Я получаю ошибку

Error in mutate_impl(.data, dots) : 
  Evaluation error: object 'PrinPay' not found.
In addition: Warning message:
package ‘bindrcpp’ was built under R version 3.4.4 

Может ли кто-нибудь помочь мне

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...