在sapply函数中使用行位置

  • 本文关键字:位置 sapply 函数 r
  • 更新时间 :
  • 英文 :


这个问题是关于sapply访问其工作行的行号。我正在尝试使用sapply(或任何适用的应用(而不是循环。但是,我需要了解哪个我在apply期间正在研究。我可以重写此功能,但是我想通过申请功能进行操作。

财务:在重组二项式树u> 1中,d = 1/u是股票价格的乘数。要找到时间n的价格,您要乘以:零价格,u^#上升,动作下降的d^#。#down #up = n

s_t = function(s_tm, tree_path, move_ratio, u_or_d ='u'){
    u.z = move_ratio
    if (u_or_d == 'd') { u.z = 1/move_ratio }
    ud_coeff = u.z ^ (tree_path[1]-tree_path[2])
    s_tm * ud_coeff }

s_t将是馈送到sapplyFUN功能。变量tree_path是元组/向量(#up,#down(。对于任何时间t,它们总是总和到相同的数字。但是,我需要#up和#down才能更改树上的每个节点。

示例:s0 = 100,u = 1.25 d = 1/u = 0.8,t = 3。返回4By1矩阵,代表时间3(即返回S3(

时可能的股票价格
S0 = 100; S1 = [125, 80]; S2=[156.25, 100, 64]; S3 = [195.3125, 125, 80, 51.2]

我想通过在空矩阵上调用sapply,使用 s_T作为应用

prices = matrix(data=0, nrow =4, ncol=1)
stock_at_time_n = sapply(X = prices, 
    FUN = s_t, tree_path= (ROW#, LENGTH(prices) - ROW#), 
    move_ratio=1.25)

结果应为

[195.3125, 125, 80, 51.2]

不担心它是否是矩阵,向量等,因为我只能用 as.Whatever_I_want()

将其变形

tree_path= (ROW#, LENGTH(prices) - ROW#)的正确符号是什么,以便我获得S3输出?

通常,在sapply循环中访问R对象的索引,您将使用seq_along。类似:

sapply(X = seq_along(prices),
       FUN = function(i) {
               s_t(s_tm=100, 
                   tree_path= c (i,length(prices)-i),
                   move_ratio = 1.25)
              })

或实际上使用sapply的方式,您可以只使用1:n(在您的情况下n = 4(。谢谢,祝你好运!

最新更新