【发布时间】:2012-03-27 21:25:55
【问题描述】:
我正在尝试使用 cor.test 函数进行关联,如下所示:
对于对象mr中的每个字符串,我选择一个对象(mr1)并从表达式数据集中找到这个mr1对应的目标,并创建新对象mr.tgt。
现在,对于 mr.tgt 中的每个字符串,cor.test 在两个数值向量之间执行,1. 匹配 mr.tgt[i] 的基因表达值和 2. 匹配 mr1(或 mr 的 mirna 表达值[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 循环的缓慢数据处理。
非常感谢有用的提示。
谢谢!
【问题讨论】:
-
外部和内部for循环都使用
i。不是很好,但它实际上仍然可以按预期工作。 -
您似乎使用了
expr和mir- 它们是什么,为什么它们不是函数的参数? -
感谢 Tommy 查看代码。
expr和mir是 data.frames,我分别从中提取与mr.tgt(mirna 基因目标)和mr1(mirna)匹配的表达式值。我应该切换到i和j,而不是在两个循环中都保留i。
标签: r correlation