В настоящее время я пытаюсь закодировать усредненную матрицу для всех значений матрицы из определенной переменной качества воздуха (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)