2016-11-26 3 views
1

Ich habe eine Reihe von Dateien, die, wenn ich sie lese und sie einzeln manipulieren habe ich kein Problem haben.R importieren Sie mehrere Dateien und führen komplexe Funktion auf sie

Sie sind wie folgt organisiert:

z.B.

chrY<-read.table('chrY.txt', sep ='', header=F) 
head(chrY) 
     V1 
1 4.514563 
2 4.543689 
3 4.553398 
4 4.533981 
5 4.495146 
6 4.514563 

Ich brauche jeden der Werte in numerische konvertieren:

Und so versuche ich dies für eine Liste von Chromosom Dateien:

temp = list.files(pattern="chr*.txt") 
for (i in 1:length(temp)) assign(temp[i], read.table(temp[i], sep ='', header=F)) 
> temp 
[1] "chr17.txt" "chr18.txt" 
[3] "chr19.txt" "chr1.txt" 
[5] "chr6.txt" "chrY.txt"  

Umwandlung in Numerik:

for(i in temp){ 
    temp[i]<-as.numeric(temp[i]) 
} 

Ich wollte über den Durchschnitt aller Dateien plotten und über sie plotten,

eine importierte Datei Plotten ist in Ordnung:

plot(chrY.txt[,1]) 

mein Versuch, die Mittelwerte zwischen allen von ihnen Plotten wie folgt:

for(i in length(temp)-1){ #index -1 such that iteration is not out of range 
x<-(temp[i][,1]+temp[i+1][,1])/length(temp) 
} 
plot(x) 

jedoch für die Mittelungsprozess ich die folgende Fehlermeldung erhalten:

Error in temp[i][, 1] : incorrect number of dimensions

Gibt es einen schnelleren Weg als eine for-Schleife in R? Dies ist eine Praxis laufen und ich werde möglicherweise eine Menge von Dateien auf durchschnittlich über

+0

Sie haben 'Länge (Temp) -1' und es ist nur ein einzelner Wert, möglicherweise benötigen Sie' Seq (Länge (Temp) -1) 'Zweites Problem im letzten Code ist die' Temp' ist ein "Vektor" von Objektnamen, Sie müssen es lesen (wie Sie im ersten Block des Codes getan haben) und dann die Summartion tun – akrun

+0

Danke @akrun versuchte es mit der 'Seq()' enthalten, aber bekommen der gleiche Fehler: Könnten Sie mit der zweiten Hälfte Ihrer Anweisungen klarer sein? so weit ich sehen kann, greift der erste Code-Block auf den Vektor genauso zu wie der zweite Block ... –

+0

du musst es lesen 'read.table (temp [i], sep = '', header = F) ' – akrun

Antwort

0

Wir können die Dateien in einem list gelesen werden importieren und dann mit + und dividieren durch die length der list verwenden Reduce den mean Wert zu erhalten

Verwandte Themen