stopifnot(require(data.table))
stopifnot(require(microbenchmark))
dat <- data.frame(x=sample.int(10^6, 10^5))
setDT(dat)
microbenchmark(transform(dat, y=sin(x)))
# Unit: milliseconds
# expr min lq mean median uq
# transform(dat, y = sin(x)) 67.5327 71.20615 74.45437 72.85815 75.73555
# max neval
# 120.9635 100
microbenchmark(dat[,y:=sin(x)])
# Unit: milliseconds
# expr min lq mean median uq max neval
# dat[, `:=`(y, sin(x))] 4.2602 4.40465 4.816463 4.6203 5.0858 9.8246 100