Как использовать цикл for для открытия файлов .ncdf и усреднения матричной переменной, которая имеет разные значения по всем файлам? (Использование программирования R)

В настоящее время я пытаюсь закодировать усредненную матрицу для всех значений матрицы из определенной переменной качества воздуха (ColumnAmountNO2TropCloudScreened), расположенной в разных файлах .ncdf4. Единственный способ, которым я смог это сделать, это перечислить все файлы, открыть их с помощью lapply, создать одну переменную NO2 для каждого ncdf. файл, а затем применить привязку ко всем переменным. Несмотря на то, что я смог это сделать, мне потребовалось много времени, чтобы ввести разные имена для переменных NO2 (NO2_1, NO2_2, NO2_3 и т. д.) и какую строку получить доступ к исходному файлу списка ([[1]], [[2]], [[3]] и т. д.).

Я пытаюсь ввести код, который умнее и проще, чем просто набор цифр. У меня есть все исходные файлы .ncdf4, и я пытаюсь перебрать файлы, чтобы открыть их и получить значение матрицы ColumnAmountNO2TropCloudScreened из каждого, чтобы затем я мог их усреднить. Однако мне не везет. Кто-нибудь знает, что не так с этим кодом/моей мыслью об этом? Спасибо.

Я пробую код следующим образом:

# Load libraries 
library(ncdf4)
library(abind)
library(plot.matrix)
# Set working directory
setwd("~/researchdatasets/2020")
# Declare data frame
df=NULL
# List all files in one file
files1= list.files(pattern='\\.nc4$',full.names=FALSE)
# Loop to open files, get NO2 variables 
for(i in seq(along=files1)) {
  nc_data = nc_open(files1[i])
  NO2_var<-ncvar_get(nc_data,'ColumnAmountNO2TropCloudScreened')
  nc_close(nc_data)
}
# Average variables 
list_NO2= apply(abind::abind(NO2_var,along=3),1:2,mean,na.rm=TRUE)

r nco
person Rayssa Brandão    schedule 22.06.2020    source источник


Ответы (1)


ncra NCO усредняет переменные по всем входным файлам, например,

ncra in*.nc out.nc
person Charlie Zender    schedule 23.06.2020