/ / Błąd podczas wyodrębniania plików netcdf do rastra - r, s4, r-raster, netcdf4

Błąd podczas wyodrębniania plików netcdf do rastra - r, s4, r-raster, netcdf4

Mam wiele plików NCDF w folderze. Staram się wyodrębnić je do cegły rastrowej raster i ncdf4 pakiety. Jeśli osobno rozpakuję każdy plik NCDF, to działa. Próbuję jednak wyodrębnić wszystkie pliki za pomocą pętli for, a następnie daje mi błąd.

R<-list.files("D:/Results/TimeSeries/NETCDF/")
r<-brick(paste0("D:/Results/TimeSeries/NETCDF/",R[[1]]),varname="T_min")

for(i in 2:length(R)){
r1<-brick(paste0("D:/Results/TimeSeries/NETCDF/",R[[i]]),varname="T_min")
r<-brick(r,r1)
}

Błąd w as.integer (nl): nie można zmusić typu „S4” do wektora typu "liczba całkowita"

Jeśli na to spojrzę r i r1 oddzielnie wydają się mieć ten sam zakres i oba są typu rastrowego:

> r
class       : RasterBrick
dimensions  : 81, 81, 6561, 122  (nrow, ncol, ncell, nlayers)
resolution  : 1, 1  (x, y)
extent      : 0.5, 81.5, 0.5, 81.5  (xmin, xmax, ymin, ymax)
coord. ref. : NA
data source : D:ResultsTimeSeriesNETCDFtimeseries_1km_2026.nc
names       : X0026.05.02, X0026.05.03, X0026.05.04, X0026.05.05, X0026.05.06, X0026.05.07, X0026.05.08, X0026.05.09, X0026.05.10, X0026.05.11, X0026.05.12, X0026.05.13, X0026.05.14, X0026.05.15, X0026.05.16, ...
Date        : 0026-05-02, 0026-08-31 (min, max)
varname     : T_min

> r1
class       : RasterBrick
dimensions  : 81, 81, 6561, 122  (nrow, ncol, ncell, nlayers)
resolution  : 1, 1  (x, y)
extent      : 0.5, 81.5, 0.5, 81.5  (xmin, xmax, ymin, ymax)
coord. ref. : NA
data source : D:ResultsTimeSeriesNETCDFtimeseries_1km_2027.nc
names       : X0027.05.02, X0027.05.03, X0027.05.04, X0027.05.05, X0027.05.06, X0027.05.07, X0027.05.08, X0027.05.09, X0027.05.10, X0027.05.11, X0027.05.12, X0027.05.13, X0027.05.14, X0027.05.15, X0027.05.16, ...
Date        : 0027-05-02, 0027-08-31 (min, max)
varname     : T_min

Proszę pomóż.

Odpowiedzi:

0 dla odpowiedzi № 1

Nie ma potrzeby pętli, raster jest wektoryzowany, spróbuj

p <- "D:/Results/TimeSeries/NETCDF"
R <- list.files(p, pattern = "nc$")

r <- raster::stack(file.path(p, R), varname = "T_min")

Jeśli musiałeś zapętlić, zrobię to w ten sposób:

r <- raster::stack(lapply(file.path(p, R), raster::raster, varname = "T_min"))

Edytuj: zamień raster :: raster na raster :: stack.

Zwróć także uwagę na użycie file.pathoraz dostępne udogodnienia list.files. (Wklejanie tekstu do ścieżek do plików może być problematyczne i jest bardziej skomplikowane niż korzystanie z dostępnych funkcji).