Спасибо всем.Действительно проницательные ответы.Я проверил их, и sapply
оказался быстрым, а после этого abind
.Однако в моем исходном наборе данных у меня были группировки, которые я суммировал по группам, используя dcast
.Однако после того, как я увидел предложение для ddply
, я вернулся к нему.Я понял, что использование data.table делает его на несколько порядков быстрее: действительно,
n = 1000
DT = data.table(id = sample(LETTERS[1:10], size = n, replace = TRUE),
value = sample(seq(20,30), size = n, replace = TRUE),
weight = sample(seq(1,5), size = n, replace = TRUE))
wtd_var = DT[,lapply(.SD,function(x)(weightedVar(as.numeric(x),w=weight))),by=id,.SDcols='value']
wtd_var
data.table
s рок!