2013-03-19 81 views
0

我正在做一個R作業,我必須編寫一個函數來做dist.xyz的工作。R - 「應用」2個矩陣

dist.xyz(a, b = NULL, all.pairs=FALSE) 

a和b是數字的矩陣和函數計算的 「一」和「b」對應的行之間的距離。

我嘗試了一個for循環(如下所示),但它需要很長時間,「apply」只允許我們一次對1個矩陣進行操作。

dis = vector() 
for (i in 1:nrow(a)) { 
    append(dis,sqrt(sum((a[i,] - b[i,])^2))) 
} 

是否有某種方法可以「應用」到兩個矩陣?

在此先感謝

+2

你需要學習如何創建一個例子(這對於作業問題尤其如此)。目前我們不知道expData1或expData2是什麼樣子。 – 2013-03-19 16:50:23

回答

1

如果您有示例數據,會更容易。但這是我的要求。這不是''適用於2個矩陣'的一般解決方案'。然而,就你而言,你只需要申請一個矩陣a-b,因爲每行的元素方面的差異是你首先要做的。然後將平方,總和和平方根應用於每一行以獲得您的結果。

set.seed(7) # just to ensure reproducible results 

rowDist<-function(a,b) { 
    apply(a-b,1,function(x)sqrt(sum(x^2))) 
} 

a<-matrix(rnorm(25),5,5) 
b<-matrix(rnorm(25),5,5) 

rowDist(a,b) 
#[1] 2.716251 2.685056 3.699462 2.125998 3.437412