2012-03-27 11 views
0

Ich versuche Korrelation cor.test Funktion zu tun, wie folgt:cor.test Funktion zum Iterieren x und y-Vektoren unter Verwendung gilt

Für jede Zeichenfolge von dem Objekt Mr, wähle ich ein Objekt (MR1) und Suche nach entsprechenden Zielen für dieses MR1 ​​aus dem Expression-Dataset und erstelle ein neues Objekt, mr.tgt.

Nun wird für jede Zeichenkette in mr.tgt cor.test zwischen zwei numerischen Vektoren durchgeführt, 1. übereinstimmende Genexpressionswerte zu mr.tgt [i] und 2. übereinstimmende mira-Expressionswerte zu mr1 (oder Herr [i]).

Schließlich wird Tabelle für relevante Werte geschrieben.

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) 
    } 
    } 
} 

I anwenden Funktion für cor.test zu verwenden versuchen aber Schwierigkeiten für jeden mr.tgt [i] in jedem von mr [i] Iterieren mit.

Ich wollte sehen, ob ich Anwendung anwenden kann, um die langsame Datenverarbeitung mit for-Schleife zu überwinden.

Vielen schätzen hilfreiche Hinweise.

Danke!

+0

Sowohl die äußere als auch die innere Schleife verwenden 'i'. Nicht großartig, aber es kann tatsächlich immer noch wie erwartet funktionieren. – Tommy

+0

Es scheint, dass Sie 'expr' und' mir' verwenden - was sind diese, und warum sind sie nicht Argumente für die Funktion? – Tommy

+0

Danke Tommy für den Code. 'expr' und' mir' sind data.frames, aus denen übereinstimmende Ausdruckswerte zu 'mr.tgt' (mirna-Gen-Ziel) bzw.' mr1' (mira) extrahiert werden. Ich sollte zu "i" und "j" wechseln, anstatt "i" für beide Schleifen zu behalten. – Samir

Antwort

0

Es ist nicht sehr wahrscheinlich, dass der For-Loop-Overhead der Flaschenhals ist. Ich vermute, die Zeit in write.table dominiert, obwohl die cor.test auch langsam sein könnte.

Versuchen Sie, den write.table Teil zu kommentieren und sehen Sie, wie schnell es wird. Wenn das Problem "gelöst" wird, versuchen Sie, die Tabelle in der Schleife zu erstellen und anschließend zu schreiben.