Ваш код возвращает вам NULL
, потому что вы присваиваете EAD
, результат цикла for
, который всегда NULL
С другой стороны, return
внутри for loop
останавливает выполнение, так чтоон остановится на первой итерации.
Я думаю, вы хотите что-то вроде этого:
max_tenor <- 0:40
for (i in max_tenor) {
EAD[[i+1]] <- ifelse(credit$LoanTenor<i,credit$OutstandingBal*(1+credit$InterestRate)^(4/12)-credit$OutstandingBal/credit$LoanTenor,0)
}
Это даст вам список, каждый элемент списка хранит итерацию вашей ifelse
Другими вариантами могут быть семейства apply
.Например:
EAD <- sapply(max_tenor,function(i) ifelse(credit$LoanTenor<i,credit$OutstandingBal*(1+credit$InterestRate)^(4/12)-credit$OutstandingBal/credit$LoanTenor,0))