这个问题是关于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
将是馈送到sapply
的FUN
功能。变量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
(。谢谢,祝你好运!