有没有办法简化R中利用循环的函数?

Los*_*rai 6 loops r function

例如,我目前正在开发一项功能,让您可以看到如果您投资股票市场可能会有多少钱.它是目前使用一个循环结构,这实在是让我感到愤怒,因为我知道有可能是一个更好的方式R.实现代码,并利用向量我运行的功能,这似乎有点太怪也之前创建的虚拟载体.

还是R的初学者(刚刚开始!),所以任何有用的指导都非常感谢!

set.seed(123)
##Initial Assumptions 
initialinvestment <- 50000 # e.g., your starting investment is $50,000
monthlycontribution <- 3000 # e.g., every month you invest $3000 
months <- 200 # e.g., how much you get after 200 months

##Vectors
grossreturns <- 1 + rnorm(200, .05, .15) # approximation of gross stock market returns
contribution <- rep(monthlycontribution, months)
wealth <- rep(initialinvestment, months + 1)

##Function
projectedwealth <- function(wealth, grossreturns, contribution) {
  for(i in 2:length(wealth))
    wealth[i] <- wealth[i-1] * grossreturns[i-1] + contribution[i-1]
  wealth
}

##Plot
plot(projectedwealth(wealth, grossreturns, contribution))
Run Code Online (Sandbox Code Playgroud)

A. *_*ebb 10

我可能会写

Reduce(function(w,i) w * grossreturns[i]+contribution[i],
  1:months,initialinvestment,accum=TRUE)
Run Code Online (Sandbox Code Playgroud)

但这是我对使用功能的偏好.在for这里使用循环没有任何问题.

  • 这样做有什么好处? (4认同)
  • 没有,务实.对于那些在功能上思考的人来说,它更具惯用性.但是,使用accumulate的`Reduce`只是一个很好实现的`for`循环.如上所述,在问题中使用`for`循环没有任何问题. (2认同)