Operações de linha em data.table usando `by = .I`

Aqui está uma boa explicação sobre SOoperações de linha emdata.table

Uma alternativa que me veio à mente é usar uma únicaid para cada linha e, em seguida, aplique uma função usando oby argumento. Como isso:

library(data.table)

dt <- data.table(V0 =LETTERS[c(1,1,2,2,3)],
                 V1=1:5,
                 V2=3:7,
                 V3=5:1)

# create a column with row positions
dt[, rowpos := .I]

# calculate standard deviation by row
dt[ ,  sdd := sd(.SD[, -1, with=FALSE]), by = rowpos ] 

Questões:

Existe uma boa razão para não usar essa abordagem? talvez outras alternativas mais eficientes?

Por que usarby = .I não funciona da mesma maneira?

dt[ , sdd := sd(.SD[, -1, with=FALSE]), by = .I ]

questionAnswers(1)

yourAnswerToTheQuestion