ну, там только первый пункт про правильное использование циклов (вот как раз про preallocation, про который я говорил(, а все остальное сводится к «не используйте циклы».
При этом некоторые его варианты достаточно странные (если уж дататейбл, то зачем изменять дататейбл внутри цикла?), не говоря уже о том, что он не использует очень понятный (и, скорее всего, более быстрый, чем его варианты) способ векторизации:
system.time({df$V5 <- "lesser_than_4"
df$V5[(df$col1 + df$col2 + df$col3 + df$col4 > 4)] <- "greater_than_4"
})