我希望通过更改列z
的索引来递归地对数据表进行子集化,同时根据基于%in%
的基于{{p}}的向量过滤行。
dt <- setDT(copy(diamonds))
dt <- setDT(data.frame(lapply(dt, as.character), stringsAsFactors=FALSE))
z=4
subset_by <- unique(dt[,z])[1:2]
### obviously does not work
###dt1<-dt[ z %in% subset_by]
我正在寻找最节省内存的操作来做到这一点,我确信有一种方法可以不使用colnames,但我找不到它。我看了很多帖子,其中this是最相关的
答案 0 :(得分:1)
如果我们根据索引或名称进行子集化,我们可以在.SDcols
i1 <- dt[, .I[.SD[[1]] %chin% subset_by], .SDcols = z]
dt[i1]
请注意,data.table/tbl_df/data_frame
中的列的子集可以是[[
或$
subset_by <- unique(dt[[z]])[1:2]