【发布时间】:2018-05-13 13:55:14
【问题描述】:
如果我有 n 个名为 nc.data_1、nc.data_2... nc.data_n 的文件,我如何从所有文件中获取相同的变量并将它们存储到 R 中的单个数组中? (即(a)获取时间,然后(b)分别从 n 个文件中获取具有维度的降水数据:[lon, lat, time] = [144, 91, 24])。下面的代码是我到目前为止所做的。
数据路径: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相同的方法
【问题讨论】:
-
为什么不直接使用
raster::stack(x)或raster::brick(x),其中x 是您要堆叠的文件名列表。然后我可能会将它们保留为砖块或堆栈(空间数据比数组好得多),但如果你真的需要一个数组而不是as.array是你的朋友。 -
您是否尝试过以下解决方案?有帮助吗?