R 改进距离计算

R 改进距离计算,r,performance,loops,distance,R,Performance,Loops,Distance,我已经建立了自己的距离,我们称之为d1。现在,我有一个矩阵,我需要计算它的距离。考虑到x是矩阵,每个样本的内容,为获得距离矩阵而编写的代码如下所示: # Build the matrix wDM <- matrix(0, nrow=nrow(x), ncol=nrow(x)) # Fill the matrix for (i in 1:(nrow(wDM)-1)){ for (j in (i+1):nrow(wDM)){ wDM[i,j] <- wDM[j

我已经建立了自己的距离,我们称之为d1。现在,我有一个矩阵,我需要计算它的距离。考虑到x是矩阵,每个样本的内容,为获得距离矩阵而编写的代码如下所示:

# Build the matrix
  wDM <- matrix(0, nrow=nrow(x), ncol=nrow(x))

# Fill the matrix
  for (i in 1:(nrow(wDM)-1)){
    for (j in (i+1):nrow(wDM)){

    wDM[i,j] <- wDM[j,i] <- d1(x[i,], x[j,])

  }
}
我必须多次实施这个过程。因此,我想知道是否有一种更快的方法来填充距离矩阵wDM,而不是使用两个for循环


非常感谢,

您可以使用dist-from-proxy包。它允许您通过设置参数method=yourDistance默认值为欧几里德,来指定用户定义的距离函数。查看此处的文档:

谢谢。只有一个问题;虽然我在解释问题时将d1定义为两个向量的函数,但它也依赖于第三个常量变量d1a,x1,x2,如何将此参数传递到方法中?我认为将列设置为矩阵的常量向量a应该可以解决此问题。假设a是10个变量的权重向量,我想计算加权距离。我不明白你说什么..然后在你的距离函数中定义这个a,并相应地修改你的距离方程。谢谢你,我想dist{proxy}就是我要找的。我将打开一个新的问题来解释附加参数的问题。