Ich habe einen großen Datensatz mit ca. 25L Zeilen, wo diese Funktion "status" angewendet wird. Es ist ein Markierungsverfahren. Innerhalb des Fn werden Operationen vektorisiert und Anwendungsfunktionen verwendet. c1-c4 sind die Spalten in meinen Daten. Trotzdem dauert es etwa 5-6 Stunden, um das Fn auszuführen.Wie kann ich einen Datenrahmen teilen und parallel dazu benutzerdefinierte Funktionen ausführen?
status(mydata)
status <- function (x) {
x<- subset(x, x$RECORD_TYPE != "INPUT")
x$c1<- as.character(x$c1)
x$c2 <- as.factor(x$c2)
x$c3 <- as.factor(x$c3)
return (data.frame(cbind(
tapply(x$c2, x$c4,
function (x) ifelse (!(any(x=="BAD")), "G", sum(x== "BAD"))) ,
tapply(x$c2D, x$c4,
function (x) sum (x== "NEG")) )))
}
Gibt es eine Möglichkeit, die Fn weiter zu beschleunigen. Ich arbeite in einem Server mit 16 Kernen. Also ich glaube, es kann weiter beschleunigt werden.
Bitte geben Sie ein kleines reproduzierbares Beispiel für andere zu testen – akrun