R 如何定义一个变量来子集i中data.table的多个列?
我的一项常见任务是以data.tables格式过滤(子集)数据集。我想以一种复杂的方式,使用多个特定于列的布尔条件来子集I中的行。当我得到一个新的数据集时,它将具有相同类型的列,并且我希望以相同的方式对所有数据集进行过滤 为了说明我的任务,让我首先创建一个示例data.tableR 如何定义一个变量来子集i中data.table的多个列?,r,data.table,R,Data.table,我的一项常见任务是以data.tables格式过滤(子集)数据集。我想以一种复杂的方式,使用多个特定于列的布尔条件来子集I中的行。当我得到一个新的数据集时,它将具有相同类型的列,并且我希望以相同的方式对所有数据集进行过滤 为了说明我的任务,让我首先创建一个示例data.table library(data.table) dt <- data.table(a = seq(1,6), b = letters[seq(1,6)], c = rep(c(4,3,2))) 。假设我要对列应用以下
library(data.table)
dt <- data.table(a = seq(1,6), b = letters[seq(1,6)], c = rep(c(4,3,2)))
。假设我要对列应用以下筛选条件:
dt[b != 'd'][c < 4][a < 6]
。有没有办法将过滤条件转换为变量,这样我就可以将其标记到data.table的末尾
我试过了
x <- [b != 'd'][c < 4][a < 6]
dt[x]
x如果要在不同的数据集上应用,请引用表达式并在每个数据集上对其求值
i1 <- quote(b != 'd' & c < 4 & a < 6)
dt[dt[, eval(i1)]]
# a b c
#1: 2 b 3
#2: 3 c 2
#3: 5 e 3
i1您需要i1并且:dt[eval(i1)]
x <- [b != 'd'][c < 4][a < 6]
dt[x]
Error: unexpected '[' in "x <- ["
i1 <- quote(b != 'd' & c < 4 & a < 6)
dt[dt[, eval(i1)]]
# a b c
#1: 2 b 3
#2: 3 c 2
#3: 5 e 3