R数据表 - 表达多个子集条件



我有一个看起来像这样的数据表:

set.seed(1)
n <- 10; p <- 6
dat <- as.data.table(matrix(sample(c(0,1),n*p,replace = TRUE), n, p) )
setnames(dat, letters[1:p])

我想将数据表征服以仅包含具有def列的行都大于0。我可以使用以下代码执行此操作:

dat[d > 0 & e > 0 & f > 0]

但是,当我尝试表达与以下相同的子集条件时,它给了我一个错误:

cols <- c("d", "e", "f")
dat[cols > 0]

正确的方法是什么?

谢谢。

我们可以在 .SDcols中指定'cols'''''''''''''''''''''''''''''''''that data..table.table( .SD(,检查它是否大于0,然后使用Reduce&,我们通过检查相应的行是否所有元素大于0,并使用该元素将数据集的行

来征用,获得逻辑向量。
dat[dat[, Reduce(`&`, lapply(.SD, `>`, 0)),.SDcols = cols]]

最新更新