为什么在R中进行循环时重复第一个值?

时间:2014-12-23 17:59:04

标签: r netcdf

我有几个要提取到文本文件的netcdf文件,但我发现输出文件A,B,Ces55.txt的第一个值(来自第一个文件)对于整个文本重复文件,所以循环不从其他文件中获取值 代码:

    library("ncdf")
 a<-list.files("C:\\Users\\CLdata", "*.nc", full.names = TRUE)
 dt <-   as.POSIXct(strptime(basename(a), "data_%Y%m%dT%H%M%S_%Y%m%dT%H%M%S", tz = "GMT"))
 for(i in 1:length(a)){
  f <- open.ncdf(a[i])
  A = get.var.ncdf(nc=f,varid="Sgf",verbose=TRUE)
  B <- get.var.ncdf(nc=f,varid="gh")
  C <- get.var.ncdf(nc=f,varid="jk")
  df=data.frame(date = dt, A, B ,C ) }
   write.table(df,file="es55.txt")

示例:

    "date" "A" "B" "C"
    "1" 2010-09-29 23:59:59 0.0191961424604022 216 216
    "2" 2010-09-29 23:59:59 0.0191961424604022 216 216
    "3" 2010-09-29 23:59:59 0.0191961424604022 216 216
    "4" 2010-09-29 23:59:59 0.0191961424604022 216 216
    "5" 2010-09-29 23:59:59 0.0191961424604022 216 216

1 个答案:

答案 0 :(得分:2)

可能是您在循环外写入文件。尝试按如下方式附加到循环内的文件:

library("ncdf")
a <-list.files("D:\\Cloud\\Dropbox\\Documents\\Shared\\", "*", full.names = TRUE)

dt <- as.POSIXct(strptime(basename(a), "data_%Y%m%dT%H%M%S_%Y%m%dT%H%M%S", tz = "GMT"))
for(i in 1:length(a)){
  f <- open.ncdf(a[i])
  A = get.var.ncdf(nc=f,varid="Sgf",verbose=TRUE)
  B <- get.var.ncdf(nc=f,varid="gh")
  C <- get.var.ncdf(nc=f,varid="jk")
  df <- data.frame(date = dt, A, B ,C ) 
  print(df) # For debugging purposes
  if (i==1) {
     write.table(df,file="es55.txt")
     }
  else {
     write.table(df,file="es55.txt", append = TRUE)          
}

否则,每次循环运行中print(df)语句的输出是什么?