为暴露的期限结构编写函数

时间:2019-03-07 14:16:25

标签: r

我有一个数据框(我们称其为credit),其中有一个名为OutstandingBalInterestRateLoanTenor的列,我希望以此为模型来建模数据框中每次观察的最长期限为40年。因此,我希望我的数据框中可以有40个额外的列,以根据某个公式显示此术语结构。

我正在使用以下公式,但是它给了我一个对象,EADNULL(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 个答案:

答案 0 :(得分:1)

您的代码会退回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))