替换整个小标题中的值

标签 r dplyr tidyverse

在基本 R 中,我可以使用以下代码来删除/替换整个数据帧中的值(例如,所有 NA 或大于 0.99 的值)。

df[df > 0.99] <- NA
df[is.na(df)] <- 0L

有没有办法在 tidyverse 中使用 dplyr 执行等效操作?

最佳答案

您可以将 mutate_allreplace 一起使用:

df = data.frame(x = c(1.2, 0.4, NA, 0.6), y = c(NA, 0.3, 0.992, 0.5))
df %>% mutate_all(~ replace(., . > 0.99 | is.na(.), 0))
#    x   y
#1 0.0 0.0
#2 0.4 0.3
#3 0.0 0.0
#4 0.6 0.5

或者使用funs:

df %>% mutate_all(funs(replace(., . > 0.99 | is.na(.), 0)))

如果您只需要将其集成为管道的一部分,replace 方法应该可以工作:

df %>% replace(. > 0.99 | is.na(.), 0)

关于替换整个小标题中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47060014/

相关文章:

r - 如何在 R 中编写帕斯卡三角形的程序?

r - 如何确定是否在特定列中找到某个值?

r - 通过定界符将字符分隔成假定固定宽度的向量

r - 在 r 中检查对象是否为 null 或空字符串的最佳方法

r - 同时为两列申请 `mutate_at`?

r - 将单变量 coxph 函数一次应用于多个协变量(列)

r - 根据列 ID 合并/加入多个数据框

r - 在 R 中取消引用函数内部的参数

R graph 仅针对指定级别按级别重新排序因子

r - 使用标准评估和 do_ 在参数网格上运行模拟,无需 do.call