解释这段代码cal_correlation<-function(interaction_tab,ex1,ex2,filter){ cat('calculating correlation\n') if (ncol(interaction_tab)==2){ cl = makeCluster(parallel::detectCores() - 1) clusterEvalQ(cl,library(ggm)) clusterEvalQ(cl,library(corpcor)) clusterEx
时间: 2024-04-19 21:28:41 浏览: 15
cute(interaction_tab,ex1,ex2,filter){
cat('calculating correlation\n')
if (ncol(interaction_tab)==2){
cl = makeCluster(parallel::detectCores() - 1)
clusterEvalQ(cl,library(ggm))
clusterEvalQ(cl,library(corpcor))
clusterExport(cl, c("interaction_tab", "ex1", "ex2", "filter"))
clusterEvalQ(cl, cal_correlation_worker <- function(interaction_tab, ex1, ex2, filter) {
library(ggm)
library(corpcor)
df <- interaction_tab[filter, ]
correlation <- cor(df[[ex1]], df[[ex2]])
return(correlation)
})
result <- parLapply(cl, 1, function(x) {
cal_correlation_worker(interaction_tab, ex1, ex2, filter)
})
stopCluster(cl)
return(unlist(result))
} else {
stop("interaction_tab should have exactly two columns")
}
}