【发布时间】:2015-11-11 04:39:12
【问题描述】:
我在编写安全代码来操作 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、无行、强制转换为向量因为没有行等?
【问题讨论】: