为什么在R中执行循环时重复第一个值?
我有几个netcdf文件要提取到文本文件,但我发现输出文件为什么在R中执行循环时重复第一个值?,r,netcdf,R,Netcdf,我有几个netcdf文件要提取到文本文件,但我发现输出文件es55.txt中A,B,C的第一个值(来自第一个文件)在整个文本文件中重复,因此循环不会从其他文件中取值 守则: 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%
es55.txt
中A,B,C
的第一个值(来自第一个文件)在整个文本文件中重复,因此循环不会从其他文件中取值
守则:
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")
这可能是因为您正在循环之外写入文件。尝试按如下方式附加到循环内部的文件:
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)
}
库(“ncdf”)
a我想你需要一个图书馆电话。get.var.ncdf
from在哪里?您确定es55.txt
包含第一个文件中的数据吗?在循环中,每次都覆盖df
,并且只使用df
的最后一个内容写入文件。因此,我希望您将最后一个文件的内容(a[length(a)]
)写入es55.txt
。
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)
}