2012-04-13 6 views
0

Ich verwende den folgenden Code über Paare von Dateien wie a1.txt and b1.txt, a2.txt and b2.txt, .... a999.txt and b999.txt:Wiederholte Vektornamen in Schleifenfehler

dostuff <- function(x) 
{ 
files <- list.files(pattern=paste('.', x, '\\.txt', sep='')) 
a <- read.table(files[1],header=FALSE) #file a1.txt 
G <- a$V1-a$V2 
b <- read.table(files[2],header=FALSE) #file b1.txt 
as.factor(b$V2) 
q <- tapply(b$V3,b$V2,Fun=length) 
H <- b$V1-b$V2 
model <- lm(G~H) 
return(model$coefficients[2],q) 
} 

results <- sapply(0:999,dostuff) 
Error in tapply(b$V3, b$V2, FUN = length) : arguments must have same length 

Das nehme ich an, weil beide Dateien in einem Paar keine Header haben so a hat und b hat V1 V2 V3. Dieser Fehler tritt jedoch nicht auf, wenn ich dies über kleine Chargen von Dateien wie 0:3 ausführe und die Ergebnisse für diese herauskommen die gleichen, als wenn ich jede Analyse getrennt, die Umgebung zwischen Läufen des gesamten Codes manuell löschen würde.

Ich glaube, das Problem entsteht, wenn Dateien von a1 b1 zu a10 b10 und höher laufen. Weil die Schleife ich denke, verwirrt über welche Dateien zu wählen. Dieses Problem verschwindet, solange ich mit a0 b0 zu a9 b9 laufe.

Beste Lösungen?

Antwort

2

Ich habe ähnliche Probleme festgestellt, wenn in einem Stapel, den ich zu verarbeiten versuchte, eine Streunendatei vorhanden war, die nicht die erwartete Anzahl an Zeilen hatte. Ich würde empfehlen, zunächst die Dimensionen aller Dateien zu überprüfen, um zu sehen, ob alle einverstanden sind. Meine Vermutung ist, dass die Dateien 0-3 alle richtig formatiert sind, aber vielleicht eine Datei in [0, 999] nicht.

Versuch zu sehen, zu überprüfen, ob die Abmessungen die gleichen für alle Dateien sind:

dims2 <- list() 
dims3 <- list() 
doDims <- function(x){ 
    files <- list.files(pattern=paste('.', x, '\\.txt', sep='')) 
    a <- read.table(files[1],header=FALSE) #file a1.txt 
    G <- a$V1-a$V2 
    b <- read.table(files[2],header=FALSE) #file b1.txt 
    as.factor(b$V2) 
    dims2[x] <- dim(b$V2) 
    dims3[x] <- dim(b$V3) 
} 

Dann können Sie sehen, ob alle Dimensionen sind in der Tat, was Sie erwarten.

+0

danke feff ich fand das Problem, aber nicht sicher, wie es zu korrigieren, vielleicht können Sie helfen. Die Schleife läuft gut, solange die Dateien 'a0.txt' 'b0.txt' auf' a9.txt ''b9.txt' laufen. Aber wenn ich bis zu "a10" und "b10" gehe, ist das verwirrend. – user1320502

+0

Nicht sicher, was das Problem wäre, ohne mehr Details zu wissen. Sind diese Dateien vorhanden? Oder sind die richtig formatiert? Ich habe wirklich keine Informationen, um hier helfen zu können. –