O mutate altera tbl por referência?
O que eu realmente gostodata.table
é o:=
idioma para alterar a tabela por referência, sem a necessidade de cópias caras. Pelo que entendi, este é um dos aspectos que tornadata.table
tão ultra-rápido em comparação com outros métodos.
Agora, comecei a brincar com odplyr
pacote que parece ter igualmente desempenho. Mas como os resultados ainda precisam ser atribuídos usando o<-
operador, eu esperava uma drenagem de desempenho nesse nível. No entanto, parece não haver nenhum.
Como um exemplo:
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" )
Eu só estou querendo saber como isso é possível? Ou há um erro conceitual na maneira como comparo? O meu entendimento de<-
errado?