Написание функции для структуры сроков воздействия - PullRequest
0 голосов
/ 07 марта 2019

У меня есть фрейм данных (давайте назовем его credit), в котором есть столбцы с именами OutstandingBal, InterestRate и LoanTenor, которые я хотел бы смоделировать для временной структуры максимум на 40 лет для каждогонаблюдение в кадре данных.Поэтому я хочу, чтобы в моем фрейме данных было 40 дополнительных столбцов, показывающих эту структуру терминов в соответствии с определенной формулой.

Я использую следующую формулу, но она дает мне объект EAD в Глобальной среде с NULL(Empty),

max_tenor <- 0:40
EAD <- for (i in max_tenor) {
  EAD = ifelse(credit$LoanTenor<i,credit$OutstandingBal*(1+credit$InterestRate)^(4/12)-credit$OutstandingBal/credit$LoanTenor,0)
  return(EAD)}

Можете ли вы помочь мне, если я иду не так?Надеюсь, мой запрос ясен

1 Ответ

1 голос
/ 07 марта 2019

Ваш код возвращает вам 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...