我在编写安全代码来操作 R 中的数据帧时遇到问题。我遇到的问题是 df[...] <- (...)
容易受到没有行的 data.frame 的影响(除其他外!)。
示例 1:
df <- data.frame(a = 1:2, b = c(NA, 5))
df[is.na(df$b), 'b'] <- 0
做我想要的 - 用 0 替换 NA。
示例 2:
df.empty <- data.frame(a = character(), b = character())
df.empty[is.na(df.empty$b), 'b'] <- 0
df.empty[is.na(df.empty$b), 'b', drop = F] <- 0
在示例 2 中改变数据框的两次尝试都会导致错误(替换有 1 行,数据有 0;或“未使用的参数 (drop = F)”)。
我觉得这很烦人。
我如何普遍根据data.frame中的任意(向量)标准改变列,而不必手动检查所有可能的条件,如NA、NULL、无行、强制转换为向量因为没有行等?
最佳答案
也许使用dplyr
?
这个例子结合了 mutate()
和 ifelse()
,似乎实现了你想要的。
df.empty <- df.empty %>%
mutate(b = ifelse(is.na(b), 0, b))
关于r - 即使 data.frame 为空,如何安全地替换 data.frame 中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32069087/