【发布时间】:2013-11-07 23:39:56
【问题描述】:
我正在尝试使用以下代码将列的子集从 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))
有什么建议吗?
【问题讨论】:
-
lapply函数返回 0。将其更改为function(x) { x[is.na(x)] <- 0; x}或使用 Jilber 的解决方案 -
这个子集是你所有的列。这是你的意思还是在你的真实数据中你只是试图将 一些 NAs 转换为零并让其他人留在原地?