cor.test函数使用apply for迭代x和y向量

时间:2012-03-27 21:25:55

标签: r correlation

我正在尝试使用cor.test函数进行相关,如下所示:

对于来自对象mr的每个字符串,我选择一个对象(mr1)并从表达式数据集中找到该mr1的相应目标,并创建新对象mr.tgt。

现在,对于mr.tgt中的每个字符串,cor.test在两个数字向量之间执行,1。匹配基因表达式值到mr.tgt [i]和2.匹配的mirna表达式值到mr1(或mr) [I])。

最后,表格是为相关值而编写的。

mr <- c("1p","2p","3p",...)

mr.tgt.pval.function <- function(mr){
  file.out <- file.choose(new = TRUE)

  for(i in 1:length(mr)){        
    mr1 <- as.character(mr[i])
    mr.tgt <- c("a","b","c",..) # mr.tgt %in% mr = 0 & mr.tgt changes with each of mr1[i]

    for(i in 1:length(mr.tgt)){
      cor.result.pval <- cor.test(as.numeric(expr[which(rownames(expr) == mr.tgt[i]),]),
                        as.numeric(mir[which(rownames(mir) == mr1),]), 
                                   method="spearman", alternative="less", exact=NULL, continuity=T)
      write.table(cbind(mr1,mr.tgt[i],cor.result.pval$p.value,cor.result.pval$estimate[[1]]),file = file.out, sep="\t", na='', append=T,col.names=FALSE)
    }  
  }  
}

我正在尝试对cor.test使用apply函数,但是在每个mr [i]中的每个mr.tgt [i]都难以迭代。

apply(?matched.expr.vector.mr.tgt.for.each.of.mr[i],
2,function(x) cor.test(?,?,method="spearman",alternative="l"))

我想看看是否可以使用apply函数来克服for循环的慢速数据处理。

非常感谢有用的提示。

谢谢!

1 个答案:

答案 0 :(得分:0)

for循环开销不太可能成为瓶颈。我怀疑write.table中的时间占主导地位,尽管cor.test也可能很慢。

尝试评论write.table部分并查看其变化速度。如果“解决”了这个问题,请尝试在循环中组装表并在之后写入。