2012-08-22 46 views
2

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

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

我遇到了我的基本代码问题。我的算法如下:

  • 使用适用于采用可变
  • 通行证功能,将再次参加适用于整个矩阵
  • 此时你应该有两个变量对
  • 使用na.omit删除丢失的意见(必要dcorr)
  • 计算dcorr

我希望这将重新出现在相关矩阵中,但我在基本变量管理方面遇到了很多问题。我很难将变量传递给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) 
} 

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

+0

为什么不使用'dist()'来做到这一点? – Andrie

+0

你可以尝试在你的函数中插入'browser()',看看发生了什么。这会让你对你的变量以及它们传递的方式有所了解。 –

回答

1

您可能想要从vegan包中检出designdist。它允许定义交替距离/不相似矩阵。见here