【问题标题】:R lapply convert NA's to 0R lapply 将 NA 转换为 0
【发布时间】: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)] &lt;- 0; x} 或使用 Jilber 的解决方案
  • 这个子集是你所有的列。这是你的意思还是在你的真实数据中你只是试图将 一些 NAs 转换为零并让其他人留在原地?

标签: r apply na


【解决方案1】:

试试这个简单的方法

df1[is.na(df1),] <- 0

【讨论】:

  • 您应该在列上使用subset1
猜你喜欢
  • 2021-07-02
  • 2019-02-28
  • 1970-01-01
  • 2020-11-19
  • 1970-01-01
  • 2015-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多