R中的循环不起作用

时间:2017-04-27 13:12:36

标签: r loops while-loop

我试图遍历多个时间序列以便使用季节性包,虽然代码适用于单个系列,循环不会继续,我得到这样的东西

    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
}

2 个答案:

答案 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
    }