我在一个文件夹中有四个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
似乎循环没有发生在这里。
答案 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")