在使用data.table进行聚合时,我遇到了以下问题:当使用.SD并指定lapply的FUN参数时,必须显式地声明。这是意外行为还是我漏了什么?为什么我不能在lapply中显式声明FUN呢?以下是一个可重现的例子。
require(data.table)
dt <- as.data.table(iris)
dt$Sepal.Length[sample(1:nrow(dt), 10)] <- NA
dt[, lapply(.SD, function(x) sum(!is.na(x), na.rm=TRUE)), by = Species]
Species Sepal.Length Sepal.Width Petal.Length Petal.Width
1: setosa 47 50 50 50
2: versicolor 46 50 50 50
3: virginica 47 50 50 50
dt[, lapply(.SD, FUN=function(x) sum(!is.na(x), na.rm=TRUE)), by = Species]
Error in ..FUN(FUN = Sepal.Length) :
unused argument(s) (FUN = Sepal.Length)
更新:
已报告为错误:#4839。(Arun的修复现在在v1.8.9中)