r - 即使 data.frame 为空,如何安全地替换 data.frame 中的值?

标签 r dataframe

我在编写安全代码来操作 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/

相关文章:

python - 按列分组并找到每组的最小值和最大值

python - 在数据框列中选择非重复值

r - 字符串列表到字符向量列表

r - 将数据从一个地理区域分配到另一个地理区域

r - 有条件地计算 2 个日期之间每个 ID 的唯一日期数

python - 特殊过滤器 pandas dataframe

r - 从日期创建因子变量 'weekend' 和 'weekday'

r - 一种将不同长度的命名向量合并到 R 中的数据框(将名称信息保留为列名)的快速方法

Python Dataframe 从一行的另一列的每个列表元素中减去一列的值

python - 转置 Pandas DataFrame 中的列子集,同时使用其他列作为分组变量?