Contexte
En tant que suivi de R : Passer un data.frame par référence à une fonction et Comment ajouter une colonne dans le data frame à l'intérieur d'une fonction
Je tente la fonction suivante, apparemment simple :
naToZero <- function(df) { df$Vol[is.na(df$Vol)] <- 0 }
Data.frame
> str(WFM)
Classes ‘tbl_df’, ‘tbl’ et 'data.frame': 990571 obs. de 14 variables:
$ Date : chr "04/12/2017" "04/12/2017" "04/12/2017" "04/12/2017" ...
$ Time :Classes 'hms', 'difftime' atomic [1:990571] 41970 41969 41968 41967 41966 ...
.. ..- attr(*, "units")= chr "secs"
$ Bar# : chr "197953/197953" NA "197952/197953" NA ...
$ Bar Index : int 0 NA -1 NA NA -2 NA NA -3 NA ...
$ Tick Range: int 0 NA 0 NA NA 0 NA NA 0 NA ...
$ Open : num 33.9 NA 33.9 NA NA ...
$ High : num 33.9 NA 33.9 NA NA ...
$ Low : num 33.9 NA 33.9 NA NA ...
$ Close : num 33.9 NA 33.9 NA NA ...
$ Vol : int 100 NA 200 NA NA 100 NA NA 400 NA ...
$ MACDHist : num -59 NA -87 NA NA ...
$ MACD : num -450 NA -445 NA NA ...
$ MACDSig : num -391 NA -358 NA NA ...
$ ZScore1 : num NA NA NA NA NA NA NA NA NA NA ...
En espérant utiliser cette fonction pour accélérer le nettoyage des données.
Problème
Après avoir exécuté la fonction dans l'éditeur de script, et avoir passé un data.frame pour l'exécuter. Mais la fonction ne fait rien et quand je fais Voir(WFM), c'est toujours les mêmes vieilles données. Cependant, quand j'exécute manuellement la commande :
WFM$Vol[is.na(WFM$Vol)] <- 0
Alors ça marche.
Choses que j'ai essayées
J'ai essayé d'expérimenter en me basant sur les deux liens que j'ai vus, qui semblent pertinents :
En utilisant WFM <- naToZero(WFM)
, produit un vecteur avec une seule valeur, 0.
Essayé en utilisant WFM <- data.table(WFM)
et en exécutant la fonction... même chose.
Je dois manquer quelque chose de fondamental.