我有一個名爲「mat」的矩陣和一個名爲「center」的較小矩陣。如何使用一些應用函數來解決什麼需要兩個for循環在R
temp = c(1.8421,5.6586,6.3526,2.904,3.232,4.6076,4.8,3.2909,4.6122,4.9399)
mat = matrix(temp, ncol=2)
[,1] [,2]
[1,] 1.8421 4.6076
[2,] 5.6586 4.8000
[3,] 6.3526 3.2909
[4,] 2.9040 4.6122
[5,] 3.2320 4.9399
center = matrix(c(3, 6, 3, 2), ncol=2)
[,1] [,2]
[1,] 3 3
[2,] 6 2
我需要計算每行墊與中心的每一行之間的距離。例如,墊[1]和中心的距離[1,]可以被計算爲
diff = mat[1,]-center[1,]
t(diff)%*%diff
[,1]
[1,] 3.92511
同樣,我可以找到墊[1]和中心的距離[2,1]
diff = mat[1,]-center[2,]
t(diff)%*%diff
[,1]
[1,] 24.08771
重複此過程,墊的每一行,我將結束與
[,1] [,2]
[1,] 3.925110 24.087710
[2,] 10.308154 7.956554
[3,] 11.324550 1.790750
[4,] 2.608405 16.408805
[5,] 3.817036 16.304836
我知道如何用for循環實現它。我真的希望有人能告訴我如何用某種apply()函數來做到這一點,也許我猜mapply()。
感謝
這個答案不正確。你之前有一個合適的。你需要將矩陣轉置爲數學回收才能正常工作,然後採用colSums當然。 – John