125 votes

Nettoyage des valeurs `Inf` d'un dataframe R

Dans R, j'ai une opération qui crée des Inf lorsque je transforme un cadre de données.

Je voudrais transformer ces Inf en valeurs NA valeurs. Le code que j'ai est lent pour les grandes données, existe-t-il un moyen plus rapide de le faire ?

Disons que j'ai le cadre de données suivant :

dat <- data.frame(a=c(1, Inf), b=c(Inf, 3), d=c("a","b"))

Ce qui suit fonctionne dans un seul cas :

 dat[,1][is.infinite(dat[,1])] = NA

Je l'ai donc généralisé avec la boucle suivante

cf_DFinf2NA <- function(x)
{
    for (i in 1:ncol(x)){
          x[,i][is.infinite(x[,i])] = NA
    }
    return(x)
}

Mais je ne pense pas que ce soit vraiment utiliser la puissance de R.

-1voto

Gang Su Points 81

Vous pouvez également utiliser la fonction replace_na, très pratique : https://tidyr.tidyverse.org/reference/replace_na.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X