我正在尝试编写一个函数,该函数将使用奇特的距离估计(dcorr
,布朗距离)创建相关矩阵。更一般地说,我想编写一个通用“相关”矩阵的代码,您可以在其中插入任何距离估算器。
我的数据格式化为列是变量,行是观察。
我的基本代码出现问题。我的算法如下:
na.omit
删除缺失的观察结果(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)
}
有什么想法吗?我确信要有一个简单的方法来做到这一点。