R легко преобразовать NA в 0

Я пытаюсь преобразовать подмножество столбцов из NA в 0, используя следующий код. К сожалению, он превращает все ячейки в 0.

df1 <- data.frame(id = 1:20, col1 = runif(20), col2 = runif(20), col3 = runif(20))

df1[sample(1:20,5),'col1'] <- NA
df1[sample(1:20,5),'col2'] <- NA
df1[sample(1:20,5),'col3'] <- NA

subset1 <- c('col1','col2','col3')

df1[,subset1] <- as.data.frame(lapply(df1[,subset1], function(x) x[is.na(x)] <- 0))

Какие-либо предложения?


person screechOwl    schedule 07.11.2013    source источник
comment
функция lapply возвращает 0. измените ее на function(x) { x[is.na(x)] <- 0; x} или используйте решение Jilber   -  person Jake Burkhead    schedule 08.11.2013
comment
Это подмножество все ваши столбцы. Это то, что вы имели в виду, или в ваших реальных данных вы только пытаетесь преобразовать некоторые NA в ноль и оставить другие на месте?   -  person Simon O'Hanlon    schedule 08.11.2013


Ответы (1)


Попробуйте этот простой подход

df1[is.na(df1),] <- 0
person Jilber Urbina    schedule 07.11.2013
comment
Вы должны сделать это с subset1 в столбцах. - person Simon O'Hanlon; 08.11.2013