从for循环中的nc文件中提取值

时间:2014-10-24 07:49:47

标签: r for-loop netcdf

我在一个文件夹中有四个netcdf文件,我想从这些文件中提取一些值。 文件的str是:

  [1] "file C:1.DBL.nc has 2 dimensions:"
  [1] "lat   Size: 1"
  [1] "lon   Size: 1"
  [1] "------------------------"
  [1] "file C:\\Users\\data.nc has 3 variables:"
  [1] "short So[lon,lat]  
  [1] "short il[lon,lat]  
  [1] short fg[lon,lat] 

我的循环是:

    a<-list.files("C:\\Users\\Data", "*.nc", full.names = TRUE)
    for(i in 1:length(a)){
    f <- open.ncdf(a[i])
    A = get.var.ncdf(nc=f,varid="So",verbose=TRUE)
    B <- get.var.ncdf(nc=f,varid="il")
    C <- get.var.ncdf(nc=f,varid="fg")
    write.table(t(rbind(A,B,C)),file="output-all.txt")}

没有错误,但输出文本文件中只有一行结果:

                "A" "B" "C"
            "1" 500 200 300

应该与文件夹(4)中的文件数一样多,例如:

                "A" "B" "C"
            "1" 500 200 300
            "2" 500 200 300
            "3" 500 200 300
            "4" 500 200 300

似乎循环没有发生在这里。

1 个答案:

答案 0 :(得分:1)

write.table命令移出循环。类似的东西:

a<-list.files("C:\\Users\\Data", "*.nc", full.names = TRUE)
D<-matrix(NA,length(a),3)

for(i in 1:length(a)){
   f <- open.ncdf(a[i])
   A = get.var.ncdf(nc=f,varid="So",verbose=TRUE)
   B <- get.var.ncdf(nc=f,varid="il")
   C <- get.var.ncdf(nc=f,varid="fg")
   D[i,]<-t(rbind(A,B,C))}

write.table(D,file="output-all.txt")