使用R中的循环从多个NetCDF文件中获取单个变量

时间:2017-11-29 18:57:10

标签: r netcdf netcdf4

如果我有n个名为nc.data_1,nc.data_2 ... nc.data_n的文件,我如何从所有文件中获取相同的变量并将它们存储到R中的单个数组中? (即(a)得到时间然后(b)获得具有尺寸的降水数据:[l​​on,lat,time] = [144,91,24]分别来自n个文件)。下面的代码是我到目前为止所做的。

数据路径:https://www.dropbox.com/sh/m8u3xwm5za7m7mc/AACHq2AjeZaxHm1sEhaOJ_g2a/2011?dl=0

## Call library functions for future plot
library(abind)
library(fields)
library(maps)
library(ncdf4)

## create an empty list that saves the incoming files
nc.data<-list()
list.filenames<-list.files(pattern = ".nc")

## Read in all data files using a loop
for(i in 1:length(list.filenames)){
nc.data[[i]]<-nc_open(list.filenames[[i]])
}

## Getting lat and lon from a single file since they're the same for all files
lat_2x25 <- ncvar_get(nc.data[[1]], 'lat')
lon_2x25 <- ncvar_get(nc.data[[1]], 'lon')

对于时间变量,我不能使用与lat和lon相同的方法,因为每个文件中的时间不同(每个文件存储一天的数据)

1 个答案:

答案 0 :(得分:0)

不是R解决方案,但如果在linux中你可以先使用CDO(我假设你把文件名作为扩展名写回到前面&#34; .nc&#34;通常在最后) :

cdo merge data_*.nc merge_file.nc
cdo selvar,variable_name merge_file.nc variable.nc

然后你可以在R中打开并阅读后者。