我想利用apply
函數集中的一個來做一些計算。R在對稱矩陣上應用函數
首先,我有兩個矩陣,mat1
和mat2
:
mat1
:
a b c
1 NA NA NA
2 1 1 1
3 1 1 NA
4 NA 1 NA
mat2
:
a b c
a 1.0 0.2 0.3
b -0.7 1.0 0.8
c -0.1 -0.3 1.0
mat2
使用mat1
使用一個函數,它是不相關的這裏計算,基本上我想申請一個權重g函數到mat1
,當數據較少(因此準確度較低)時會對mat2
的結果進行懲罰。
所以要做到這一點,我想,對於某個座標x,y
在mat2
中,計算兩列mat1
的成對完整性。
例如:mat2["a","b"]
或mat2["b","a"]
(應該是相同的)將成爲原始值*(的a
mat1
和b
完整行/的a
mat1
和b
總行)。
所以真正的問題是如何將一個函數應用於一個矩陣,它爲每一列循環每一列(雙循環)並將其存儲在一個權重矩陣中以便與另一個矩陣相乘?
我已經可以從zoo
包比較使用rollapply
兩行,像這樣:
rowSums(rollapply(is.na(t(mat1)), 2, function(x) !any(x)))
我得到:
[1] 2 1
如,比較A和B,2行是完整的,比較b和c,1行完成。那麼我怎樣才能比較a到b,a到c和b到c?
謝謝。
謝謝,正是我一直在尋找的! –