Ich versuche, etwas auf einem sehr großen Dataset auszuführen. Grundsätzlich möchte ich alle Dateien in einem Ordner durchlaufen und die Funktion vonJSON darauf ausführen. Ich möchte jedoch Dateien überspringen, die einen Fehler erzeugen. Ich habe eine Funktion mit tryCatch gebaut, das funktioniert jedoch nur, wenn ich die Funktion lappy und nicht parLapply verwenden.TryCatch mit parLapply (paralleles Paket) in R
Hier ist mein Code für meine Exception-Handling-Funktion:
readJson <- function (file) {
require(jsonlite)
dat <- tryCatch(
{
fromJSON(file, flatten=TRUE)
},
error = function(cond) {
message(cond)
return(NA)
},
warning = function(cond) {
message(cond)
return(NULL)
}
)
return(dat)
}
und dann rufe ich parLapply auf ein Zeichen Vektor Dateien, die die vollständigen Pfade zu den JSON-Dateien enthält:
dat<- parLapply(cl,files,readJson)
Dies erzeugt einen Fehler, wenn eine Datei erreicht wird, die nicht ordnungsgemäß beendet wird, und erstellt die Liste "dat" nicht, indem die problematische Datei übersprungen wird. Was sollte die readJson-Funktion mildern?
Wenn ich reguläres Plätschern verwende, funktioniert es jedoch einwandfrei. Es erzeugt die Fehler, jedoch erstellt es immer noch die Liste, indem es die fehlerhafte Datei überspringt.
irgendwelche Ideen, wie ich die Ausnahmebehandlung mit parLappy parallel verwenden könnte, so dass es über die problematischen Dateien überspringen und die Liste generieren wird?
Dies hat den Trick! Ich danke dir sehr!!! – user2905393