R 使用新的距离函数创建相关矩阵

R 使用新的距离函数创建相关矩阵,r,R,我正在尝试编写一个函数,它将使用一个奇特的距离估计(dcorr,布朗距离)创建一个相关矩阵。更一般地说,我想为一个通用的“相关”矩阵编写代码,您可以在其中插入任何距离估计器 我的数据的格式是,列是变量,行是观察值 我的基本代码有问题。我的算法如下: 使用apply获取变量 传递给将再次应用于整个矩阵的函数 此时,应该有两对变量 使用na.省略删除缺失的观察值(dcorr所需) 计算dcorr 我希望这会产生相关矩阵,但我在基本变量管理方面有很多问题。我很难将变量传递给apply函数。特别是,

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

我的数据的格式是,列是变量,行是观察值

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

  • 使用apply获取变量
  • 传递给将再次应用于整个矩阵的函数
  • 此时,应该有两对变量
  • 使用
    na.省略
    删除缺失的观察值(dcorr所需)
  • 计算dcorr
我希望这会产生相关矩阵,但我在基本变量管理方面有很多问题。我很难将变量传递给apply函数。特别是,我想将一个数组传递给在第一个apply中拉入的列,并将其传递给第二个apply(应用于整个原始矩阵)

我的代码:

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)
}

dcormatrix您可能需要从
vegan
套餐中查看
designdist
。它允许定义备用距离/相异矩阵。请参阅。

为什么不直接使用
dist()
来执行此操作?您可以尝试将
browser()
插入函数中,然后查看发生了什么。这将使您对变量及其传递方式有一些了解。