【问题标题】:R data table - Expressing multiple subsetting conditions succintlyR数据表 - 简洁地表达多个子集条件
【发布时间】:2017-04-19 15:18:03
【问题描述】:

我有一个如下所示的数据表:

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]

这样做的正确方法是什么?

谢谢。

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    我们可以指定'cols',在.SDcols中,循环遍历data.table的子集(.SD),检查是否大于0,然后用Reduce&amp;,我们通过检查相应行的所有元素是否大于 0 来获取逻辑向量,并使用它来子集数据集的行

    dat[dat[, Reduce(`&`, lapply(.SD, `>`, 0)),.SDcols = cols]]
    

    【讨论】:

      猜你喜欢
      • 2020-07-16
      • 1970-01-01
      • 2011-04-22
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 2014-02-20
      • 2016-12-20
      • 2021-08-01
      相关资源
      最近更新 更多