【问题标题】:Append a result to a list in R and sapply question将结果附加到 R 中的列表和 sapply 问题
【发布时间】: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 &lt;- append(payoff.arr, payoff)
  • 也可以在if语句之前初始化payoff &lt;- 0,去掉else。我不知道你的参数对象是什么,但 for 循环通常可以在矢量化 R 中替换为 apply 函数的成员

标签: r function sapply montecarlo


【解决方案1】:

您应该指定要附加的内容!

例如

> append(1:3,666)
[1]   1   2   3 666

666 附加到1,2,3

如 cmets 中所述,您可能需要 payoff.arr &lt;- append(payoff.arr, payoff)

【讨论】:

    猜你喜欢
    • 2021-01-11
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 2012-03-10
    • 2020-06-20
    • 2018-08-15
    • 1970-01-01
    • 2021-06-07
    相关资源
    最近更新 更多