编辑:这是一个不断重新平衡的投资组合问题.
有谁知道用于递归调用的函数是什么?
让s =股票;
让c =现金;
让X_0 =初始财富;
令r =是随机向量看起来像(1,-0.5,-0.5,1, - .5,1,1,1-0.5,...)#获得1或0.5的#chance是50%.
X_0 = s + c
X_1 = 1/2*x_0*(1 + r)+ 1/2*x_0
X_2 = 1/2*x_1*(1 + r)+ 1/2*x_1#在这个等式中x_0变为x_1,这就是全部
X_3 = 1/2*x_2*(1 + r)+ 1/2*x_2
....依此类推,
R中是否有一个函数将上一步的输入作为此步骤的输入?
do.call?lapply?召回?我弄清楚了!
提前致谢!
它是为更高阶功能量身定制的工作Reduce.这是代码
calc_wealth <- function(x, r){
return(0.5*x*(1 + r) + 0.5*x)
}
x0 <- 10
set.seed(1234)
r <- sample(c(-0.5, 1), size = 5, replace = TRUE, prob = c(0.5, 0.5))
wealth <- Reduce('calc_wealth', r, init = x0, accumulate = TRUE)
> r
[1] 1.0 -0.5 -0.5 -0.5 -0.5
> wealth
[1] 10.000000 15.000000 11.250000 8.437500 6.328125 4.746094
Run Code Online (Sandbox Code Playgroud)
以下是Reduce从帮助文件中提取的相应文档.
Reduce(f, x, init, right = FALSE, accumulate = FALSE)
Reduce使用二元函数来连续组合给定向量的元素和可能给定的初始值.如果给出了init,则Reduce在逻辑上将它分别添加到开始(从左到右)或x的结尾.如果这个可能增强的向量v具有n> 1个元素,则Reduce分别从左到右或从右到左依次将f应用于v的元素.即,左减少计算l_1 = f(v_1,v_2),l_2 = f(l_1,v_3)等,并返回l_ {n-1} = f(l_ {n-2},v_n),