Hello,

Je souhaiterai remplacer les valeurs NA par des valeurs calculées à partir de l'élément précédent, mais sans utilisé de boucle for, en une seule ligne de commande si possible (en utilisant which, index, apply, ... ou autre)

Voici mon programme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
df<-data.frame(D=c("2017-01-01", "2017-04-01", "2017-07-01", "2017-10-01", "2018-01-01", "2018-04-01", "2018-07-01", "2018-10-01", "2019-01-01"),
               V=c(9.56,9.44,9.64,8.94,9.18,NA,NA,NA,NA))
 
df$D <- as.Date(df$D)
cols<-colnames(d)
ts  <- xts(df[,-1], order.by=as.Date(df[,1],"%m/%d/%Y"))
colnames(ts)<-c('VALUE')
VALUE
2017-01-01 9.56
2017-04-01 9.44
2017-07-01 9.64
2017-10-01 8.94
2018-01-01 9.18
2018-04-01 NA
2018-07-01 NA
2018-10-01 NA
2019-01-01 NA

et je souhaiterai en output l'équivalent de ceci mais sans boucle, et en une seule ligne le plus simple possible (ou pas):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
for(i in seq_along(ts)[-1])if(is.na(ts[i])) ts[i] <- ts[i-1]*1.01
VALUE
2017-01-01 9.56
2017-04-01 9.44
2017-07-01 9.64
2017-10-01 8.94
2018-01-01 9.18
2018-04-01 9.27
2018-07-01 9.36
2018-10-01 9.46
2019-01-01 9.55

Les NA étant remplacé par [n-1]*1.01

Merci