【发布时间】:2020-12-23 10:30:56
【问题描述】:
问题:我想检查一行是否仅包含 data.table 对象中的 NA。
目前,我有一个依赖于apply 的实现。有没有更高效且易读的解决方案?
欢迎任何改进和想法!谢谢
dt <- data.table(
x = c("A", "B", "C", "D"),
y = c("true", NA, NA, "true"),
z = c(NA, NA, "true", "true"),
a = c(NA, NA, NA, "ha")
)
# Current Code:
idx <- apply(dt[, c(2:ncol(dt)), with = FALSE], 1, function(x) all(is.na(x)))
dt <- dt[!idx]
# Code Attempt 1 (not so nice due to temp na_count column)
rel_cols <- names(dt)[!names(dt) %in% c("x")]
dt[, na_count := rowSums(is.na(.SD)), .SDcols = rel_cols][na_count < (ncol(dt) - 2)]
【问题讨论】:
标签: r data.table