我正在寻找一种将 split-apply-combine 策略与 Rdata.table
包一起使用的方法。
library(data.table)
# take a data.table object, return integer
func <- function(DT)
{
DT$a * DT$a
}
DT = data.table(
a = 1:50
# ... further fields here
b = rep(1:10, 5)
)
# this obviously won't work:
DT[, result:=func, by=b]
# but this will (based on @Aruns answer below)
DT[, result:=func(.SD), by=b]
虽然这里非常简单data.table
,结构更复杂,但我希望能够将逻辑提取到函数中并将子集作为data.table
s 发送给它们,而不必列出所有字段名称。