递归地使用输出作为函数的输入

use*_*210 2 r

编辑:这是一个不断重新平衡的投资组合问题.

有谁知道用于递归调用的函数是什么?

让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?召回?我弄清楚了!

提前致谢!

Ram*_*ath 6

它是为更高阶功能量身定制的工作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),