Почему второй метод станет медленнее, увеличив размер data.table:
library(data.table)
DF = data.table(x=rep(c("a","b","c"),each=40000000), y=sample(c(1,3,6),40000000,T), v=1:9)
1
DF1=DF2=DF
system.time(DF[y==6,"y"]<-10)
user system elapsed
2.793 0.699 3.497
2:
system.time(DF1$y[DF1$y==6]<-10)
user system elapsed
6.525 1.555 8.107
3:
system.time(DF2[y==6, y := 10]) # slowest!
user system elapsed
7.925 0.626 8.569
>sessionInfo()
R version 3.2.1 (2015-06-18)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 14.04.3 LTS
Есть ли более быстрый способ сделать это?