R,w.r.t中的键模拟很多行

时间:2017-03-15 15:16:11

标签: r simulation

例如,我有8对付款期。对于每一行,我想得到一个现值。我应该使用tapply吗? sapply?你能告诉我应该怎么处理它。提前致谢 enter image description here

1 个答案:

答案 0 :(得分:0)

我假设你的数据是这样的:

IR1 IR2 IR3 IR4 IR5 IR6 IR7 IR8 Coupon lastPayment
  #   #   #   #   #   #   #   #     40        1040

让您的数据称为dat。然后,您可以通过运行此来找到您的现值。

dat$presentvalue = dat$Coupon*(1/(1+dat$IR1)^(.5) + 1/(1+dat$IR2) + 1/(1 + dat$IR3)^(3/2) + ... + 1/(1 + dat$IR7)^(3.5)) + dat$lastPayment/(1+dat$IR8)^4

一个功能示例:

doStuff = function(dat){
    dat$presentvalue = dat$Coupon*(1/(1+dat$IR1)^(.5) + 1/(1+dat$IR2) + 1/(1 + dat$IR3)^(3/2) + ... + 1/(1 + dat$IR7)^(3.5)) + dat$lastPayment/(1+dat$IR8)^4

    return(dat)
}

因为这是用于模拟的,所以你真的想要运行这样的东西。

for(i in 1:nSim){
    dat = generateDat
    dat$presentvalue = dat$Coupon*(1/(1+dat$IR1)^(.5) + 1/(1+dat$IR2) + 1/(1 + dat$IR3)^(3/2) + ... + 1/(1 + dat$IR7)^(3.5)) + dat$lastPayment/(1+dat$IR8)^4
}

您不需要函数来计算当前值。模拟将每次都设置相同,所以只需将它添加到您生成数据的下面的for循环中。