【问题标题】:Convert NAs to 0 in a list of dataframes在数据帧列表中将 NA 转换为 0
【发布时间】:2018-02-22 18:17:17
【问题描述】:

我知道以前有人问过这个问题,但答案总是对 OP 过于具体。我对此也有些陌生。

我有一个包含 180 个数据帧的列表 WaFrames。我需要影响它们,因为手动需要太长时间。

基本的df[is.na(df)] <- 0在一帧上运行良好,但是当我试图让它在列表中的每一帧上运行时我被卡住了。我已经尝试了所有 lapply 方法并尝试了 for 循环。我被难住了。

还有一个答案可以让我了解如何一次对所有帧进行其他彻底的更改。

提前致谢!

【问题讨论】:

  • 试试lapply(WaFrames, function(x) replace(x, is.na(x), 0))
  • 欢迎来到 StackOverflow!请阅读有关how to ask a good question 的信息以及如何提供reproducible example。这将使其他人更容易帮助您。
  • @akrun 谢谢!这确实循环并没有给出错误,但它没有做出改变。我想知道是否需要将其粘贴在类似 for (i in WaFrames) 中。
  • 您需要将它分配给它。 waFrames[] <- lapply(WaFrames, ...
  • 再次感谢您!那是一个巨大的面掌时刻。这行得通。

标签: r list dataframe na


【解决方案1】:

你可以这样做:

x <- dplyr::data_frame(a = c(NA, 1, 2, NA),
                       b = c(1, 2, NA, 3))
y <- dplyr::data_frame(a = c(NA, 3, 4, NA),
                       b = c(1, 2, NA, 3))

listy <- list(x, y)
func <- function(df){
  df[is.na(df)] <- 0
}
purrr::map(listy, function(x) replace(x, is.na(x), 0))

【讨论】:

  • 啊,刚刚看到 akrun 在 cmets 中做了类似的事情。他的可能更好,没有额外的库之类的!
  • 仍然,谢谢。我仍然可以试试这个。感谢您的反馈。
猜你喜欢
  • 2016-05-21
  • 1970-01-01
  • 1970-01-01
  • 2012-10-21
  • 2015-05-09
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多