例如,我目前正在开发一个函数,可以帮助您了解如果在股市上投资可能会有多少钱。它目前使用的是循环结构,这让我感到非常烦恼,因为我知道可能有更好的编码方式,并且可以在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))
None
更符合函数式编程思想的习惯用法。但是使用Reduce
和累加器的结果就是一个优秀实现的for
循环。对于这个问题的陈述,使用for
循环并没有什么问题。 - A. Webb