子集数据表满足条件

时间:2018-12-18 10:07:27

标签: r data.table

我有一个data.table我想要一个子集,只包含那些长度大于length_x的列。

DT[, lapply(.SD, function(x) sum(!is.na(x)) > length_x)]

还有

DT[, lapply(.SD, function(x) sum(!is.na(x)) > length_x), with = FALSE]

将仅返回一个逻辑向量,为每个列分配TRUE或FALSE。

1 个答案:

答案 0 :(得分:0)

输出是每个元素长度为1的list逻辑向量。我们可以unlist使用它来创建逻辑vector并将其用于子集列

i1 <- DT[, unlist(lapply(.SD, function(x) sum(!is.na(x)) > length_x))]
DT[, i1, with = FALSE]

或使用colSums

创建逻辑索引
DT[, DT[, colSums(!is.na(.SD)) > length_x], with = FALSE]

数据

set.seed(24)
DT <- as.data.table(matrix(sample(c(NA, 1:3), 10 * 5, 
      replace = TRUE), nrow = 10))
length_x <- 6
相关问题