我有几个要提取到文本文件的netcdf文件,但我发现输出文件A,B,C
中es55.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
答案 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)语句的输出是什么?