我试图遍历多个时间序列以便使用季节性包,虽然代码适用于单个系列,循环不会继续,我得到这样的东西
i = `i'+1
+ }
+
知道下面代码中的错误是什么?我非常感谢任何指针。谢谢。
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
}
答案 0 :(得分:0)
似乎我可以看到两个问题。
1.时间条件需要在括号内。 e.g:
while(i <= 79) {...
2.你推进循环的部分是不正确的,当你不需要任何引号时,你有引号(实际上有两种不同,这就是它要求额外输入的原因)。您所需要的只是:
i = i + 1
答案 1 :(得分:0)
感谢您的帮助。这很有效:
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
}