这个什么 -
library(dplyr)
data(iris)
filter(iris, grepl("nica",Species))
编辑:另一种选择 - 在data.table()
功能%like%
library(dplyr)
data(iris)
##
Iris <- iris[
rep(seq_len(nrow(iris)),each=5000),
]
dim(Iris)
[1] 750000 5
##
library(microbenchmark)
library(data.table)
##
Dt <- data.table(Iris)
setkeyv(Dt,cols="Species")
##
foo <- function(){
subI <- filter(Iris, grepl("nica",Species))
}
##
foo2 <- function(){
subI <- Dt[Species %like% "nica"]
}
##
foo3 <- function(){
subI <- filter(Iris, Species %like% "nica")
}
Res <- microbenchmark(
foo(),foo2(),foo3(),
times=100L)
##
> Res
Unit: milliseconds
expr min lq median uq max neval
foo() 114.31080 122.12303 131.15523 136.33254 214.0405 100
foo2() 23.00508 30.33685 39.77843 41.49121 129.9125 100
foo3() 18.84933 22.47958 29.39228 35.96649 114.4389 100
'dplyr是唯一可以处理我843k data.frame'的软件包 - 我强烈建议R package'数据。 table'。 – nrussell
我做出了关注dplyr语法和“跳过data.table”的决定。我的整个应用程序已提交给dplyr,因此data.table解决方案可以,但本机dplyr是最好的。我认为dplyr是在引擎盖下使用data.table。 – userJT
'dplyr'可以与数据表一起工作,但除非您明确加载'data.table'并将data.frames转换为data.tables,否则它不会在底层使用它。这样做可能会增加额外的速度。 – Gregor