2

我正在尝试编写一个函数,该函数将使用一个奇特的距离估计(dcorr布朗距离)创建一个相关矩阵。更一般地说,我想为一个通用的“相关”矩阵编写代码,您可以在其中插入任何距离估计器。

我的数据被格式化,使得列是变量,行是观察。

我的基本代码有问题。我的算法如下:

  • 使用 apply 获取变量
  • 传递给将再次应用于整个矩阵的函数
  • 此时你应该有两对变量
  • 用于na.omit删除缺失的观测值(dcorr 所必需的)
  • 计算 dcorr

我希望这会产生相关矩阵,但我在基本变量管理方面遇到了很多问题。我很难将变量传递给应用函数。特别是,我想传递在第一个应用中拉出的列并将其传递给第二个应用(即应用于整个原始矩阵)

我的代码:

dcormatrix <- function(Matrix){
  dcorhelper <- function (Col1){
    as.matrix(apply(Matrix,2,function(Col2){
      B <- na.omit(cbind(Col1,Col2))
      dcor(B[,1],B[,2],index=1)
    },Col1=Col1))
  }
 apply(Matrix,2,dcorhelper(),Matrix=Matrix)
}

有任何想法吗?我相信一定有一个简单的方法来做到这一点。

4

1 回答 1

1

您可能想designdistvegan包裹中签出。它允许定义交替的距离/相异矩阵。见这里

于 2012-08-22T08:58:08.383 回答