R data.table与不等式条件连接

use*_*868 11 inequality r subset data.table

我想使用data.table包基于多个不等式条件对我的数据进行子集化.data.table手册中的示例显示了如何使用字符变量执行此操作,但不使用数字不等式.我还看到如何使用子集函数执行此操作.但我真的想利用data.table二进制搜索速度.以下是我想要做的一个例子.

library(data.table)

data <- data.table(X=seq(-5,5,1), Y=seq(-5,5,1), Z=seq(-5,5,1))
data

setkey(data, X, Y, Z)

#the data.frame way
data[X > 0 & Y > 0 & Z > 0]

#the data.table way (does not work as I expected)
data[J(>0, >0, >0)]
Run Code Online (Sandbox Code Playgroud)

raf*_*ira 0

使用 dplyr 包,该解决方案非常快速且简单。

install.packages(dplyr)
library(dplyr)

newdata <- filter(data, X > 0 , Y > 0 , Z > 0)
Run Code Online (Sandbox Code Playgroud)

dplyr 被证明是管理数据帧最简单、最快的软件包之一。在这里查看这个很棒的教程:http://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html

RStudio 团队还制作了一份不错的备忘单,此处:http ://www.rstudio.com/resources/cheatsheets/