Wie kann ich die Dimensionsreihenfolge bei Verwendung von ncdf4 :: ncvar_get angeben?

Nach einer früheren Frage (Schnelleres Lesen von Zeitreihen aus netCDF?) Ich habe meine netCDF-Dateien neu permutiert, um schnelle Lesevorgänge für Zeitreihen zu ermöglichen (Skripte auf Github werden irgendwann aufgeräumt ...).

Kurz gesagt, um das Lesen zu beschleunigen, habe ich die Abmessungen von neu angeordnetlat, lon, time zutime, lat, lon. Jetzt brechen meine vorhandenen Skripte, weil sie davon ausgehen, dass die Dimensionen immer sein werdenlat, lon, time, gemäß der ncdf4-Dokumentation vonncvar_get, für das Argument 'start':

Die Reihenfolge ist X-Y-Z-T (d. H. Die Zeitdimension ist die letzte).

Dies ist jedoch nicht der Fall.

Darüber hinaus ist die Reihenfolge der über das Befehlszeilenprogramm netCDF aufgelisteten Variablen inkonsistentncdump -h und die R-Funktionncdf4::nc_open. Der erste besagt, dass die Dimensionen in der erwarteten (lat, lon, time) Reihenfolge sind, während der letztere Dimensionen mit der Zeit zuerst sieht (time, lat, lon).

Laden Sie für ein minimales Beispiel die Datei heruntertest.nc und Renn

bash-$ ncdump -h .nc
bash-$ R
R> library(ncdf4)
R> print(nc_open("test.nc")

Was ich tun möchte, ist, Datensätze 5-15 von der Variablen "lwdown" zu erhalten

my.nc <- nc_open("test.nc")

Dies funktioniert jedoch nicht, da R zuerst die Zeitdimension erkennt und ich meine Skripte in ändern muss

ncvar_get(my.nc, "lwdown", start = c(5, 1, 1), count = c(10, 1, 1))

Es wäre nicht so schlimm, meine Skripte und Funktionen zu aktualisieren, außer dass ich in der Lage sein möchte, Daten aus Dateien unabhängig von der Dimensionsreihenfolge zu lesen.

Anders als Gibt es eine Möglichkeit, diese Funktion so zu verallgemeinern, dass sie unabhängig von der Dimensionsreihenfolge funktioniert?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage