2017-10-09 2 views
1

J'essaie de trouver une meilleure façon de calculer le taux de rétention sur plusieurs semaines.Calcul en R sur plusieurs semaines (taux de rétention) - pour la boucle, ou y a-t-il une meilleure option?

Il s'agit de données hebdomadaires, donc le faire dans une boucle for est probablement assez coûteux en termes de calcul, ce qui serait bien d'éviter.

r = retention.rate 
x = rep(10,52) 

y[1] = x[1] 
y[2] = x[2]+y[1]*r 
y[3] = x[3]+y[2]*r 
y[4] = x[4]+y[3]*r 

Et ainsi de suite.

Actuellement, je fais dans une boucle, comme ceci:

for(i in 2:length(y)) { 
    y[i] = x[i] + y[i-1] * r 
} 

Y at-il une meilleure façon de le faire?

Répondre

2

Essayez ceci:

y = as.numeric(lapply(1:52, function(i) sum(x[1:i]*r^(0:(i-1))))) 
+0

Merci pour votre aide! J'ai vraiment besoin de m'entraîner à utiliser des fonctions vectorielles comme celle-ci. – user1899231