r - 用动态名称替换一列中的 NA
问题描述
我在数据表中有一个列,我想用 0 替换 NA。但是,该列的名称是动态的,这意味着它存储在一个变量中(我们称之为 x)。如何“选择”其名称存储在变量 x 中的一列并将其所有 NA 替换为 0?
我试过没有成功:
DT[, get(x) := ifelse(is.na(get(x)), 0, get(x))]
DT[, .(x) := ifelse(is.na(.(x)), 0, .(x))]
DT[, x, with = FALSE][is.na(DT[, x, with = FALSE])] <- 0
解决方案
您可以使用 :
library(data.table)
DT[is.na(get(x)), (x) := 0]
DT
# a b
#1: 0 1
#2: 2 2
#3: 4 3
#4: 0 4
#5: 1 5
其他选项包括:
DT[, (x) := replace(get(x), is.na(get(x)), 0)]
或者
DT[, (x) := ifelse(is.na(get(x)), 0, get(x))]
数据
DT <- data.frame(a = c(NA, 2, 4, NA, 1), b = 1:5)
setDT(DT)
x <- 'a'
推荐阅读
- ios - 将 UIBarButtomItem 添加为 UITabBarController 的子项
- python - 来自 celery 任务的 Python 信号
- c - 如何链接两个不同的视觉工作室项目?
- docker - Makefile:从 docker 容器中提取环境变量并在另一个 docker 容器中使用它
- ios - 从 UITableViewController 的 View Model 中呈现 Modal
- powershell - 在powershell中对来自`docker ps`的输出进行排序,同时将表头保持在顶部
- javascript - 加载程序加载时如何停用背景
- swift - 快速检查或验证波斯语(波斯语)字符串
- java - 如何在 intellij idea IDE 中运行 javafx 应用程序
- c# - 更新复选框列表