[英]R: subtraction of elements of a matrix from the elements of another matrix
我正在嘗試將方程應用於兩個矩陣。 由於我是初學者 R 用戶,對我來說似乎很難。 如果您能給我一些建議,我將不勝感激。
我有兩個相似度矩陣:
> r
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 0 4 2 2 5 5
[2,] 4 0 8 3 3 2
[3,] 2 8 0 4 4 3
[4,] 2 3 4 0 0 3
[5,] 5 3 4 0 0 5
[6,] 5 2 3 3 5 0
> nr
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 0 4 7 2 4 3
[2,] 4 0 5 2 3 2
[3,] 7 5 0 3 2 2
[4,] 2 2 3 0 7 2
[5,] 4 3 2 7 0 5
[6,] 3 2 2 2 5 0
我想申請以下這些:
sum((r[i,j]-nr[i,j])^2)/6
我的大問題是從元素r
中提取nr
的元素。 如果我將nr[i,j]
替換為一個數字,例如0.4
,則以下內容完美:
s<-numeric()
for (i in 1:nrow(r))
{
for (j in 1:ncol(r))
{
s[k]<-sum((r[i,j]-0.4)^2)/6
}
}
> s
[1] 0.02666667
但我不知道如何修改這段代碼來解決原來的問題。 我將不勝感激任何幫助/建議。 謝謝!
像+
, -
, *
, /
和^
這樣的普通運算符執行元素操作。 所以簡單地說(r - nr)^2/6
就能為你做到這一點。
r
## [,1] [,2] [,3]
## [1,] 2 2 2
## [2,] 2 2 2
## [3,] 2 2 2
nr
## [,1] [,2] [,3]
## [1,] 3 3 3
## [2,] 3 3 3
## [3,] 3 3 3
r * nr
## [,1] [,2] [,3]
## [1,] 6 6 6
## [2,] 6 6 6
## [3,] 6 6 6
r - nr
## [,1] [,2] [,3]
## [1,] -1 -1 -1
## [2,] -1 -1 -1
## [3,] -1 -1 -1
(r - nr)^2/6
## [,1] [,2] [,3]
## [1,] 0.1666667 0.1666667 0.1666667
## [2,] 0.1666667 0.1666667 0.1666667
## [3,] 0.1666667 0.1666667 0.1666667
對於矩陣加法或減法,你可以這樣寫。
甲+乙,乙
A
[,1] [,2] [,3]
[1,] 3 3 3
[2,] 3 3 3
[3,] 3 3 3
B
[,1] [,2] [,3]
[1,] 2 2 2
[2,] 2 2 2
[3,] 2 2 2
但是,在乘法的情況下,如果你寫 A* B 這將給出錯誤的答案。
A*B
[,1] [,2] [,3]
[1,] 6 6 6
[2,] 6 6 6
[3,] 6 6 6
因為矩陣乘法過程不是這樣的。 它只會將其各自的行和列值相乘。
矩陣乘法的正確答案是。
A %*% B
[,1] [,2] [,3]
[1,] 18 18 18
[2,] 18 18 18
[3,] 18 18 18
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.