web-dev-qa-db-fra.com

R: Comment remplacer les éléments d'une donnée.

J'essaie de remplacer les éléments d'une donnée de données. # N/A "avec" NULL ", et je rencontre des problèmes:

foo <- data.frame("day"= c(1, 3, 5, 7), "od" = c(0.1, "#N/A", 0.4, 0.8))

indices_of_NAs <- which(foo == "#N/A") 

replace(foo, indices_of_NAs, "NULL")

Erreur dans [<-.data.frame (*tmp*, liste, valeur = "null"): les nouvelles colonnes laisseraient des trous après les colonnes existantes

Je pense que le problème est que mon index traite les données.frame comme vecteur, mais que la fonction remplaçable le traite différemment, mais je ne suis pas sûr de ce que le problème est?

13
John

Pourquoi pas

x$col[is.na(x$col)]<-value

?
[.____] Vous n'aurez pas à changer votre Dataframe

12
Aashu

La fonction Remplacer attend un vecteur et vous fournissez une donnée.

Vous devriez vraiment essayer d'utiliser NA et NULL au lieu des valeurs de caractère que vous utilisez actuellement. Sinon, vous ne pourrez pas profiter de toutes les fonctionnalités de R pour gérer les valeurs manquantes.

éditer

Vous pouvez utiliser une fonction Appliquer ou faire quelque chose comme ceci:

foo <- data.frame(day= c(1, 3, 5, 7), od = c(0.1, NA, 0.4, 0.8))
idx <- which(is.na(foo), arr.ind=TRUE)
foo[idx[1], idx[2]] <- "NULL"

Vous ne pouvez pas affecter une valeur réelle NULL dans ce cas, car il a une longueur zéro. Il est important de comprendre la différence entre NA et NULL, alors je vous recommande de lire ?NA et ?NULL.

1
Shane