通过使用 R ill 尝试打开包含 5 维空间和 15 个变量的 NetCDF 数据。(计算变量在矩阵 1000X920 中)
这个问题实际上看起来与之前的另一个问题相同。
我从这里和其他人那里得到了解释
起初我使用 RNetCDF 包,但经过一些试验,我发现包读取我的数据时不一致。然后在使用 ncdf 包后终于更好了。
在单个文件中打开数据没有问题,但是在尝试循环在文件夹内的数百个数据中查找特定变量(例如:var no 15)后,程序失败了。
> days = formatC(001:004, width=3, flag="0")
> ncfiles = lapply (days,
> function(d){ filename = paste("data",d,".nc",sep="")
> open.ncdf(filename) })
同样,当我为特定变量尝试这样的命令时
> sapply(ncfiles,function(file,{get.var.ncdf(file,"var15")})
所以我的问题是,任何使用特殊变量读取所有 netcdf 文件然后在一帧中进行计算的解决方案。从我之前的解决方案无法在整个 netcdf 数据上生成变量 15。
感谢您对此问题的任何解决方案。
更新:
这是我做的最后一件事情
当我写
library(ncdf)
files=list.files("allnc/",pattern='*nc',full.names=TRUE)
for(i in seq_along(files)) {
nc <- lapply(files[i],open.ncdf)
lw = get.var.ncdf(nc,"var15")
x=dim(lw)
rbind(df,data.frame(lw))->df }
我可以通过 > nc 获取所有 netcdf 数据
所以我如何自动获取具有新名称的变量数据,如 lw1、lw2 ......等我无法应用
var1 <- lapply(files, FUN = get.var.ncdf, variable = "var15")
然后我可以对所有数据进行计算。
我尝试使用 RNetCDF 包 n 进行循环的另一种技术
# Declare data frame
df=NULL
#Open all files
files= list.files("allnc/",pattern='*.nc',full.names=TRUE)
# Loop over files
for(i in seq_along(files)) {
nc = open.nc(files[i])
# Read the whole nc file and read the length of the varying dimension (here, the 3rd dimension, specifically time)
lw = var.get.nc(nc,'DBZH')
x=dim(lw)
# Vary the time dimension for each file as required
lw = var.get.nc(nc,'var15')
# Add the values from each file to a single data.frame
}
我可以获取可变数据,但我只从我的所有文件 nc. 注意:我的数据名称示例(data20150102001.nc,data20150102002.nc .....等)