Na przykład obecnie pracuję nad funkcją, która pozwala zobaczyć, ile pieniędzy możesz mieć, jeśli zainwestowałeś na giełdzie. Obecnie używa on struktury pętli, co mnie naprawdę irytuje, ponieważ wiem, że prawdopodobnie istnieje lepszy sposób na zakodowanie tego i wykorzystanie wektorów w R. Tworzę też fałszywe wektory przed uruchomieniem funkcji, co wydaje się trochę dziwne.Czy istnieje sposób na uproszczenie funkcji w R, które wykorzystują pętle?
Wciąż początkujący w R (właśnie zaczął!), Więc wszelkie pomocne wskazówki są bardzo cenne!
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))
Jakie są zalety robienia tego w ten sposób? – Ruben
Brak, pragmatycznie. Jest bardziej idiomatyczny dla tych, którzy myślą funkcjonalnie. Ale 'Reduce' with accumulate to po prostu dobrze zaimplementowana pętla' for'. Nie ma nic złego w używaniu pętli 'for' w pytaniu, jak wspomniano. –