私が本当に気に入ってdata.table
いるのは、:=
コストのかかるコピーを必要とせずに、参照によってテーブルを変更するイディオムです。私が理解していることから、これはdata.table
他の方法と比較して非常に高速になる側面の1つです。
dplyr
さて、同じようにパフォーマンスが高いと思われるパッケージをいじり始めました。しかし、<-
演算子を使用して結果を割り当てる必要があるため、このレベルではパフォーマンスが低下すると予想していました。ただし、ないようです。
例として:
library(dplyr)
library(Lahman)
library(microbenchmark)
library(ggplot2)
df <- Batting[ c("yearID", "teamID", "G_batting") ]
mb <- microbenchmark(
dplyr = {
tb <- tbl_df( df )
tb <- tb %.%
group_by( yearID, teamID ) %.%
mutate( G_batting = max(G_batting) )
},
data.table = {
dt <- as.data.table( df )
dt[ , G_batting := max(G_batting), by = list( yearID, teamID ) ]
},
times = 500
)
qplot( data = mb, x = expr, y = time * 1E-6, geom = "boxplot", ylab="time [ms]", xlab = "approach" )
どうすればこれが可能になるのだろうか?または、ベンチマークの方法に概念上の誤りがありますか? 私の理解は<-
間違っていますか?