【发布时间】:2021-02-21 15:36:58
【问题描述】:
R 新手,想编写一个以 3 个参数为输入的蒙特卡罗函数:
price: stock prices vector over a time period
strike: strike price
knock : knockout price
这是我的代码:
payoff.arr <- list()
option_payoff <- function(hsp, strike, knock){
for (p in hsp){
if (p <knock){
payoff <- max(p-strike, 0)
}
else{
payoff <- 0
}
payoff.arr<-append(payoff)
}
}
但是当我调用函数时:option_payoff(price,105,130)(价格是一个向量),
它显示:Error in append(payoff) : argument "values" is missing, with no default
我究竟做错了什么?对于需要超过 1 个参数的函数,我该如何使用 sapply 或 lapply?我尝试使用 sapply 并显示:Error in FUN(X[[i]], ...) : argument "knock" is missing, with no default
【问题讨论】:
-
append至少需要两个参数 - 第一个是要附加到的列表,第二个是要附加的值。我想你想要payoff.arr <- append(payoff.arr, payoff)。 -
也可以在
if语句之前初始化payoff <- 0,去掉else。我不知道你的参数对象是什么,但for循环通常可以在矢量化 R 中替换为apply函数的成员
标签: r function sapply montecarlo