我有一个数据框(我们称其为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)}
请问我要怎么解决?希望我的查询很清楚
答案 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))