Reemplazar valores de caracteres con NA en un dataframe

Tengo un dataframe que contiene (en lugares aleatorios) un valor de carácter (digamos "foo" ) que quiero reemplazar con un NA .

¿Cuál es la mejor manera de hacerlo en todo el dataframe?

Esta:

 df[ df == "foo" ] < - NA 

Una manera de cortar esto de raíz es convertir ese personaje a NA cuando leas los datos en primer lugar.

 df < - read.csv("file.csv", na.strings = c("foo", "bar")) 

Otra opción es is.na< - :

 is.na(df) < - df == "foo" 

Tenga en cuenta que su uso puede parecer un poco contra-intuitivo, pero en realidad asigna valores NA a df en el índice en el lado derecho.

Una forma alternativa de resolver es a continuación:

 for (i in 1:ncol(DF)){ DF[which(DF[,i]==""),columnIndex]< -"ALL" FinalData[which(is.na(FinalData[,columnIndex])),columnIndex]<-"ALL" } 

Esto podría hacerse con dplyr de mutate_all y replace :

 library(dplyr) df < - data_frame(a = c('foo', 2, 3), b = c(1, 'foo', 3), c = c(1,2,'foobar'), d = c(1, 2, 3)) > df # A tibble: 3 x 4 abcd     1 foo 1 1 1 2 2 foo 2 2 3 3 3 foobar 3 df < - mutate_all(df, funs(replace(., .=='foo', NA))) > df # A tibble: 3 x 4 abcd     1  1 1 1 2 2  2 2 3 3 3 foobar 3