Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何定义一个变量来子集i中data.table的多个列?_R_Data.table - Fatal编程技术网

R 如何定义一个变量来子集i中data.table的多个列?

R 如何定义一个变量来子集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))) 。假设我要对列应用以下

我的一项常见任务是以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)))
。假设我要对列应用以下筛选条件:

 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