【发布时间】:2017-10-27 05:53:42
【问题描述】:
我想编写代码,使用 data.table 语法将所有数字列中的 NA 替换为 0。
我的代码如下:
dt <- data.table(a = c(1:3,NA, NA, NA, 10:12 ), b = c(NA, NA, NA, 20:25), c = c(letters[1 : 7], NA, NA) )
> dt
a b c
1: 1 NA a
2: 2 NA b
3: 3 NA c
4: NA 20 d
5: NA 21 e
6: NA 22 f
7: 10 23 g
8: 11 24 NA
9: 12 25 NA
needed_names <- names(dt)[sapply(dt, is.numeric)]
dt_ <- dt[, lapply(.SD, function(x){if(is.na(x)) 0 else x}), .SDcols = needed_names]
> dt_
a b
1: 1 0
2: 2 0
3: 3 0
4: NA 0
5: NA 0
6: NA 0
7: 10 0
8: 11 0
9: 12 0
您能告诉我为什么我的代码不工作以及我应该如何纠正它吗?
您的建议将不胜感激。
【问题讨论】:
标签: r if-statement data.table lapply na