2013-03-19 69 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