我有以下简化问题:
temp <- matrix(rnorm(900), ncol = 3)
lev <- as.factor(rep(c("a", "b", "c"), each = 100))
dfr <- data.frame(lev = lev, temp = temp)
我想计算三个级别中每个级别的方差 - 协方差矩阵。我该如何有效地做到这一点?
非常感谢您花时间阅读(并希望回答)我的问题!
答案 0 :(得分:0)
没关系。我找到了解决方案:
lapply(split(dfr, dfr$lev), function(x) var(x[,-1]))
答案 1 :(得分:0)
我们可以使用data.table
library(data.table)
setDT(dfr)[, as.list(var(.SD)), lev]
或使用by
base R
by(dfr[-1], list(dfr[,1]), FUN = var)