【问题标题】:R - "apply" for 2 matricesR - “申请” 2个矩阵
【发布时间】:2013-03-19 16:37:52
【问题描述】:

我正在做一个 R 任务,我必须编写一个函数来完成 dist.xyz 所做的事情。

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

a 和 b 是数字矩阵,函数计算对应行之间的距离 “a”和“b”。

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

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

有没有办法“应用”到两个矩阵?

提前致谢

【问题讨论】:

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

标签: r apply


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多