2013-11-26 598 views
4

我想將一個方程應用於兩個矩陣。由於我是初學者R用戶,所以對我來說似乎非常困難。如果你能給我一些建議,我會很感激。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 

我wolud喜歡適用於這些如下:

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 

但我想不通我怎麼能修改此代碼以解決原來的問題。 我將不勝感激任何形式的幫助/建議。 謝謝!

+4

你試過簡單的'sum((r-nr)^ 2)/ 6'嗎? – mrip

+0

不,我沒有。我不認爲這可能是這麼簡單。謝謝! – Sielu

回答

7

正常的運營商如+-*/^做元素方式操作。所以只需(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 
+0

我不知道,這些操作符也可以應用於矩陣。非常感謝! :) – Sielu

相關問題