2016-02-15 237 views
0

基本上我想知道是否有任何方法可以使split函數在使用矩陣時返回具有相同暗淡名稱的矩陣。這裏是一個MWE:rownames將矩陣分割成子矩陣

m <- matrix(1:9, 3, 3, dimnames = list(c('a', 'a', 'b'), LETTERS[1:3])) 
ms <- split(a, f = rownames(a)) 
ms$a 
[1] 1 2 4 5 7 8 

,而我想ms$a是一個矩陣,如:

matrix(ms$a, ncol = 3, dimnames = list(c('a'), LETTERS[1:3])) 
    A B C 
a 1 4 7 
a 2 5 8 
+2

如果你不介意的話data.frames作爲結果的列表,你可以用'分裂(as.data.frame(M),rownames(M))'' –

+0

as.data.frame( m)'返回一個錯誤'duplicate row.names' – clemlaflemme

回答

2

我們可以通過該行的名稱拆分行的順序,然後使用該子集的矩陣的行指數。

lapply(split(1:nrow(m), rownames(m)), function(i) m[i,])