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