我试图读取在352个单独的.cdf文件中记录的7个气象变量。每个文件对应1440次测量。
我的主要问题是并非所有文件本身都有1440个测量值,当我重新组合我在循环中执行的所有测量时,我得到一个预期的错误:
Error in patm[i, ] = get.var.ncdf(ncdf, "atmos_pressure") :
number of items to replace is not a multiple of replacement length
我的问题是我如何调整我的循环以超越这个障碍?
以下是我使用的代码示例:
数据阅读。
library(chron)
library(ncdf)
library(ncdf.tools)
files=list.files('C:/Users/XXXX/Documents/R_work/XXXX/XXXX/',pattern='*.cdf',full.names=TRUE) #open all files
循环以在整个期间合并每个变量(352)
patm=matrix(nrow=length(files),ncol=1440)
tmp=matrix(nrow=length(files),ncol=1440)
rh=matrix(nrow=length(files),ncol=1440)
wspd_a=matrix(nrow=length(files),ncol=1440)
wspd_v=matrix(nrow=length(files),ncol=1440)
wdir_v=matrix(nrow=length(files),ncol=1440)
org_prec=matrix(nrow=length(files),ncol=1440)
for(i in seq_along(files)) {
ncdf=open.ncdf(files[i])
patm[i,]=get.var.ncdf(ncdf,"atmos_pressure") #Atmospheric pressure (mbar)
tmp[i,]=get.var.ncdf(ncdf,"temp_mean") #Temperature mean (ºC)
rh[i,]=get.var.ncdf(ncdf,"rh_mean") #Relative humidity mean (%)
wspd_a[i,]=get.var.ncdf(ncdf,"wspd_arith_mean") #Wind speed arithmetic mean (m/s)
wspd_v[i,]=get.var.ncdf(ncdf,"wspd_vec_mean") #Wind speed vector mean (m/s)
wdir_v[i,]=get.var.ncdf(ncdf,"wdir_vec_mean") #Wind direction vector mean (º)
org_prec[i,]=get.var.ncdf(ncdf,"org_precip_rate_mean") #ORG precipitation rate mean (mm/h)
}
在为每个变量制作.txt文件之前,将矩阵转换为单一矢量形式。
pressure=as.vector(t(patm))
temperture=as.vector(t(tmp))
humidity=as.vector(t(rh))
wind_speed_a=as.vector(t(wspd_a))
wind_speed_v=as.vector(t(wspd_v))
wind_direction_v=as.vector(t(wdir_v))
org_precipitation=as.vector(t(org_prec))