我正在寻找一种基于向量对 data.tables 进行子集化的有效方法。
这不起作用:
library(data.table)
z <- data.table(mtcars)
ids <- z[wt > 3.5, "mpg"]
z[mpg %in% ids, ]
我希望它能够工作 - 基于 data.frames 的这种行为。
ids2 <- mtcars[mtcars$wt > 3.5, "mpg"]
mtcars[mtcars$mpg %in% ids2, ]
如果我只是输入数字,它会起作用:
z[ mpg %in% c( 14.3 , 10.4) , ]
我试过转换类:
subset(z, mpg %in% ids)
subset(z, as.numeric (mpg) %in% as.numeric( ids))
subset(z, as.character(mpg) %in% as.character( ids ))
最佳答案
z[wt > 3.5, "mpg"]
会给你一个 data.table
,你需要取消引用 mpg
来获得一个向量:
ids <- z[wt > 3.5, mpg]
z[mpg %in% ids]
这使:
或者,您也可以利用
data.table
的功能来设置键:z <- data.table(mtcars, key = 'mpg')
ids <- z[wt > 3.5, unique(mpg)]
z[.(ids)]
关于r - 使用索引对 data.table 中的行进行子集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50412662/