如何透過行名稱按 R 中的矩陣列進行聚合?
為了按照行名稱來聚合矩陣列,我們可以把 colSums 與 sapply 結合起來,再對輸出進行轉置。例如,如果我們有一個叫做 M 的矩陣,那麼可以透過 t(sapply(by(M,rownames(M),colSums),identity)) 來按行名稱聚合矩陣列。
示例 1
考慮下述矩陣 −
> M1<-matrix(rpois(40,2),ncol=2) > rownames(M1)<-sample(c("A","B","C","D"),20,replace=TRUE) > M1
輸出
[,1] [,2] B 4 6 D 2 1 B 1 5 C 0 0 A 2 3 B 1 0 B 5 3 D 1 3 C 0 1 C 0 2 D 1 1 B 7 2 C 2 3 C 2 3 C 2 2 C 1 2 B 1 1 C 5 3 D 2 2 D 5 2
透過行名稱查詢 M1 的聚合 −
> t(sapply(by(M1,rownames(M1),colSums),identity))
輸出
V1 V2 A 2 3 B 19 17 C 12 16 D 11 9
示例 2
> M2<-matrix(rpois(40,10),ncol=2) > rownames(M2)<-sample(c("S1","S2","S3"),20,replace=TRUE) > M2
輸出
[,1] [,2] S1 6 10 S3 7 11 S3 13 6 S1 9 9 S2 11 9 S3 6 8 S1 4 5 S3 8 12 S2 14 8 S3 11 7 S1 15 12 S3 8 13 S3 9 10 S1 10 8 S2 14 18 S1 13 10 S1 10 4 S3 12 7 S2 5 9 S3 13 8
透過行名稱查詢 M2 的聚合 −
> t(sapply(by(M2,rownames(M2),colSums),identity))
輸出
V1 V2 S1 67 58 S2 44 44 S3 87 82
廣告