2016-06-07 100 views
0

我有以下簡化問題:如何執行的矩陣計算(例如協方差矩陣),用於不同等級因子可變的

temp <- matrix(rnorm(900), ncol = 3) 
lev <- as.factor(rep(c("a", "b", "c"), each = 100)) 
dfr <- data.frame(lev = lev, temp = temp) 

我想calcualte方差 - 協方差矩陣的每個的三個層次。我如何有效地做到這一點?

非常感謝花時間閱讀(並希望回答)我的問題!

+0

這是不是你想要做什麼? 'lapply(split(dfr,dfr $ lev),function(x)cov(x [,-1]))' – Gopala

回答

0

沒關係。我找到了解決辦法:

lapply(split(dfr, dfr$lev), function(x) var(x[,-1])) 
0

我們可以使用data.table

library(data.table) 
setDT(dfr)[, as.list(var(.SD)), lev] 

或者使用bybase R

by(dfr[-1], list(dfr[,1]), FUN = var) 
+0

但是對於更大的矩陣,格式化難以遵循。雖然謝謝! – user3236841

+0

@ user3236841所以你想要一個矩陣列表?我不確定預期產出的格式 – akrun