这是关于行操作的一个很好的解释data.table
我想到的另一种选择是id为每一行使用唯一的,然后使用by参数应用一个函数.像这样:
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 ]
Run Code Online (Sandbox Code Playgroud)
问题:
有没有理由不使用这种方法?也许其他更有效的替代品?
为什么使用by = .I不起作用?
dt[ , sdd := sd(.SD[, -1, with=FALSE]), by = .I ]