При data.table
правильным подходом будет указать переменные в .SDcols
library(data.table)
DT[, (x) := fifelse(is.na(.SD[[1]]), 0, .SD[[1]]), .SDcols = x]
. Или другой вариант - преобразовать в symbol
, а затем eval
uate
*. 1009 *
Или используйте i
, который является наиболее эффективным подходом
DT[is.na(eval(as.symbol(x))), (x) := 0]
data
DT <- data.frame(a = c(NA, 2, 4, NA, 1), b = 1:5)
setDT(DT)
x <- 'a'