Ich habe ein großes Verzeichnis mit 365 Unterverzeichnissen, die Bilder für jeden Tag des Jahres enthalten. Ich habe eine Funktion erstellt, die ich auf jedes Bild in diesen Unterverzeichnissen anwenden möchte. Im Moment ist es das, was ich habe:Iterate durch Unterverzeichnisse in For-Schleife in R
library(raster)
library(zebu)
#List all of the 365 sub-directories within my main directory
days <- list.files(full.names = F , recursive =F, pattern='*X2000*')
#Apply my function to each directory within "days"
for(j in 1:length(days)){
named <- paste0("full_",j)
in.list <- list.files(recursive = T, full.names = F)
stitched <- mosaicList(in.list)
writeRaster(stitched, path='D:/Scratch/DataConvert/Daymet_Data/Full/' ,
filename=named, overwrite=TRUE)
}
Das Ziel dieser Schleife ist die Funktion „mosaicList“, um die Bilder in jedem Unterverzeichnis anzuwenden. Das Problem ist, dass beim Ausführen der for-Schleife das Objekt "in.list" dieselben Unterverzeichnisse wie "Tage" enthält, anstatt die Bilder in den Unterverzeichnissen aufzulisten. Als Ergebnis wird versucht, meine Funktion für jedes Unterverzeichnis zur gleichen Zeit, und ich bekomme den Fehler
Error: cannot allocate vector of size 14.2 Gb
Ich bin neu in R zu laufen, so bin ich nicht ganz sicher, wo ich falsch gegangen. Hat jemand einen Einblick in die Behebung dieses Problems?
Als ich Ihren Vorschlag ausprobierte, endete mein Objekt 'in.list' leer. Wenn ich meine erste Zeile in 'for ((j in 1: length (days)) {' ändere und deinem Vorschlag folge, wird meine 'in.list' erstellt und listet die Bilder im Verzeichnis richtig auf, aber j wird stattdessen' 1L' von dem Bild, das es sein soll – ColinB
Hoppla, ich habe 'full.names = T' nicht geändert. Ich habe die Änderung vorgenommen und es funktioniert jetzt. Danke für die Hilfe! – ColinB