Ad esempio, attualmente sto lavorando a una funzione che consente di vedere quanti soldi si potrebbero avere investendo nel mercato azionario. Attualmente sta usando una struttura ad anello, che mi irrita molto, perché so che probabilmente c'è un modo migliore per codificarlo e sfruttare i vettori in R. Sto anche creando dei vettori fittizi prima di eseguire la funzione, il che mi sembra un po 'strano.C'è un modo per semplificare le funzioni in R che utilizzano i loop?
Ancora un principiante in R (appena iniziato!), Quindi qualsiasi guida utile è molto apprezzata!
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))
Qual è il vantaggio di farlo in questo modo? – Ruben
Nessuno, in modo pragmatico. È più idiomatico per coloro che pensano funzionalmente. Ma 'Reduce' con accumulate è semplicemente un ciclo' for' ben implementato. Non c'è niente di sbagliato nell'uso del ciclo 'for' nella domanda, come affermato. –