R-“;套用;对于2个矩阵

R-“;套用;对于2个矩阵,r,apply,R,Apply,我正在做一个R赋值,我必须编写一个函数来完成dist.xyz的功能 dist.xyz(a, b = NULL, all.pairs=FALSE) a和b是数字矩阵,该函数计算相应的数字行之间的距离 “a”和“b” 我尝试了一个for循环(如下所示),但它花费的时间太长,“应用”只允许我们一次对一个矩阵进行操作 dis = vector() for (i in 1:nrow(a)) { append(dis,sqrt(sum((a[i,] - b[i,]) ^ 2))) }

我正在做一个R赋值,我必须编写一个函数来完成
dist.xyz
的功能

dist.xyz(a, b = NULL, all.pairs=FALSE) 
a和b是数字矩阵,该函数计算相应的数字行之间的距离 “a”和“b”

我尝试了一个for循环(如下所示),但它花费的时间太长,“应用”只允许我们一次对一个矩阵进行操作

 dis = vector()
 for (i in 1:nrow(a)) {
    append(dis,sqrt(sum((a[i,] - b[i,]) ^ 2)))
 } 
有什么方法可以“应用”两个矩阵吗


提前感谢

如果您有示例数据,会更容易。但这是我的看法。这不是“应用于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
set.seed(7)#只是为了确保可重复的结果

Rowdist您需要学习如何创建示例(对于家庭作业问题尤其如此)。目前我们不知道expData1或expData2是什么样子。