【发布时间】:2019-09-26 14:10:20
【问题描述】:
我有一个矩阵,用于计算列之间的相关性。我创建了一个函数,它以相关矩阵的形式给出结果(因为 apply() 函数),但我想直接得到一个成对的相关数据框。是否可以在没有任何中间矩阵的情况下做到这一点:矩阵->成对相关数据框
cor_rho<-function(y) {
res <- foreach(i = seq_len(ncol(y)),
.combine = rbind,
.multicombine = TRUE,
.inorder = FALSE,
.packages = c('data.table', 'doParallel')) %dopar% {
apply(y, 2, function(x) 1 - ((var(y[,i] - x)) / (var(y[,i]) + var(x))))}
return(res)}
这是同一个函数,我只是加了几行得到我想要的data.frame
cor_rho<-function(y) {
res <- foreach(i = seq_len(ncol(y)),
.combine = rbind,
.multicombine = TRUE,
.inorder = FALSE,
.packages = c('data.table', 'doParallel')) %dopar% {
apply(y, 2, function(x) 1 - ((var(y[,i] - x)) / (var(y[,i]) + var(x))))}
colnames(res)=rownames(res)=colnames(y)
Df<-data.frame(var1=rownames(res)[row(res)[upper.tri(res)]],
var2=colnames(res)[col(res)[upper.tri(res)]],
corr=res[upper.tri(res)])
return(Df)}
这给了我这样的东西
var1 var2 value
var1 var3 value
var2 var3 value
【问题讨论】:
标签: r matrix correlation