Не уверен, что это более красноречиво, но эта функция также найдет и позволит заменить NA (или любое значение, которое вам нравится) в выбранных столбцах data.table:
update.mat <- function(dt, cols, criteria) {
require(data.table)
x <- as.data.frame(which(criteria==TRUE, arr.ind = TRUE))
y <- as.matrix(subset(x, x$col %in% which((names(dt) %in% cols), arr.ind = TRUE)))
y
}
it:
y[update.mat(y, c("a", "b"), is.na(y))] <- 0
Функция создает матрицу из выбранных столбцов и строк (координаты ячеек), которые соответствуют входным критериям (в этом случае is.na == TRUE).