Изменяет ли мутирование tbl по ссылке?

Что мне действительно нравится вdata.table это:= идиома для изменения таблицы по ссылке, без необходимости дорогостоящих копий. Насколько я понимаю, это один из аспектов, который делаетdata.table такой сверхбыстрый по сравнению с другими методами.

Теперь я начал играть с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" )

Мне просто интересно, как это возможно? Или есть концептуальная ошибка в моем тесте? Мое понимание<- неправильно?

Ответы на вопрос(2)

Ваш ответ на вопрос