我有一個矩陣,其N行(聚類算法的迭代)的每一行都包含M點(列)所屬的每個簇:從具有標籤的N個向量快速計算共生矩陣
例如:
data <- t(rmultinom(50, size = 7, prob = rep(0.1,10)))
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 0 0 2 1 1 0 2 1 0
[2,] 3 1 2 0 0 0 0 1 0 0
[3,] 0 1 2 1 0 0 0 0 2 1
[4,] 0 1 1 0 2 0 0 2 0 1
[5,] 3 0 0 0 2 1 0 0 0 1
[6,] 0 1 2 0 0 1 1 2 0 0
[7,] 0 1 0 1 0 1 1 2 1 0
[8,] 3 0 0 2 0 0 0 1 0 1
...
我想建立一個共生矩陣,其中位置(i,j)爲兩個點已通過看到的同一集羣中的次數的總和不同的行。
一個天真的做法是:
coincidences <- matrix(0, nrow=10, ncol=10)
for (n in 1:50){
for (m in 1:10){
coincidences[m,] <- coincidences[m,] + as.numeric(data[n,m] == data[n,])
}
}
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 50 17 21 22 15 14 16 20 18 18
[2,] 17 50 17 14 17 18 15 14 20 16
[3,] 21 17 50 20 21 16 16 13 16 20
[4,] 22 14 20 50 16 18 16 21 18 14
[5,] 15 17 21 16 50 18 16 17 11 17
[6,] 14 18 16 18 18 50 18 22 25 13
[7,] 16 15 16 16 16 18 50 14 20 22
[8,] 20 14 13 21 17 22 14 50 11 15
[9,] 18 20 16 18 11 25 20 11 50 18
[10,] 18 16 20 14 17 13 22 15 18 50
如何我可以使其更快?
額外:如何使用ggplot2
來繪製它? (我已經看到了gplots
heatmap.2
但我不知道這是不是矯枉過正)
有在'fR'函數的誤差,應爲'(n的1:50)'代替'對(正在1:10)'。 fC功能也需要改變。 – fishtank
謝謝@fishtank :) – aeongrail
我在'all.equal'語句中得到''平均相對差異:0.4100652「'。不應該'p'遍歷'ncol'而不是'nrow'?另一件事是微陣列已經'***抓到段錯誤****地址0x3d33018,導致'未映射內存' – fishtank