2017-04-27 7 views
-5

Ich versuche, über mehrere Zeitreihen, um Schleife saisonale Paket zu verwenden und während der Code gut für einzelne Serien arbeitet, wird die Schleife nicht weiter und ich so etwas wie diesesSchleife in R funktioniert nicht

i = `i'+1 
+ } 
+ 

Irgendeine Idee, was im folgenden Code falsch ist? Ich würde alle Hinweise sehr schätzen. Vielen Dank.

i=1 
while i<=79 { 
    rm(list=ls()) #clear workspace 
    sad <- read.dta("C:/esample`i'.dta") 
    sad <- data.frame(sad) 
    ts<- lapply(sad,ts,frequency=12, start=1960.1) 
    l1 <- lapply(ts, function(e) try(seas(e, na.action = na.x13))) 
    is.err <- sapply(l1, class) == "try-error" 
    d_sad <- data.frame(do.call(cbind, lapply(l1[!is.err], final))) 
    save.image("C:/dsad`i'.RData") 
    write.dta(d_sad, "X:/dsad`i'.dta") 
    i = `i'+1 
} 
+1

Sie entfernen den Index 'i'. Ich bezweifle, dass es notwendig ist, den Arbeitsbereich am Anfang zu löschen; aber vielleicht möchtest du am Ende rm (traurig, ts, ...). Alternativ können Sie es in eine Funktion einbinden. – Frank

+3

Die lokale Syntax für Stata ('\' i'') wird nicht nach R übernommen. – lmo

Antwort

0

Scheint wie es gibt zwei Probleme von dem, was ich sehen kann.

1.Die während Bedingung muss in Klammern sein. z:

while(i <= 79) {... 

2. Teil, wo Sie die Schleife voran falsch ist, haben Sie Anführungszeichen (zwei verschiedene Arten tatsächlich, weshalb es für zusätzliche Eingabe zu fragen), wenn Sie keine Anführungszeichen benötigen. Alles, was Sie brauchen, ist:

i = i + 1 
+0

Sie sollten eine 'for' -Schleife verwenden. – Roland

+0

Vielen Dank! Das hat funktioniert. –

0

Vielen Dank für Ihre Hilfe. Das hat funktioniert:

mywd=setwd 
    i=1 
    while (i<=20) { 
     infile <- paste("esample",i,".dta",sep=""); 
outfileR<- paste("dsad",i,".RData",sep="") 
     outfile <- paste("dsad",i,".dta",sep=""); 
     sad <- read.dta(infile) 
     sad <- data.frame(sad) 
     ts<- lapply(sad[-1],ts,frequency=12, start=1960.1) 
     l1<- lapply(ts, function(e) try(seas(e, na.action = na.x13))) 
     # list failing models 
     is.err <- sapply(l1, class) == "try-error" 
     # return final series of successful evaluations 
     d_sad1 <- data.frame(do.call(cbind, lapply(l1[!is.err], final))) 
     write.dta(d_sad1, outfile) 
     save.image(outfileR) 
     rm(sad, ts, infile, outfileR, outfile, is.err, d_sad, d_sad1, l1) 
     i = i+1 
    }