Ich habe ein wenig über die zunehmende Leistung von for-Schleifen in r gelesen, aber ich bin immer noch mit einem fest ~ 140sec.Leistungssteigerung von R for-Schleifen nach Vorbelegung von Datenstrukturen
werde ich mit dem Code starten:
matrix <- matrix(NA, length(register[,1]), length(AK), dimnames = list(register[,1], AK))
data.cleaned <- data[data$FO %in% register[,1],]
rownames(data.cleaned) <- paste(1:nrow(data.cleaned))
for (i in 1 : nrow(data.cleaned)) {
for (j in 1 : nrow(matrix)) {
if (data.cleaned$FO[i] == rownames(matrix)[j]) {
for (k in 1 : ncol(matrix)) {
if (data.cleaned$AK[i] == colnames(matrix)[k])
{matrix[j,k] <- 1}
}
}
}
}
Leider kann ich kein reproduzierbares Beispiel liefern. Dieser data.cleaned Datenrahmen ist ein Rahmen, der ungefähr 11000 Reihen enthält. In jeder Zeile gibt es eine Beobachtung für FO (Hauptkategorie) und für AK (Unterkategorie für FO) (zwei verschiedene Variablen).
Das Ziel ist Füllmatrix [i, j] mit 1, wenn in einer Zeile die entsprechende FO- und AK-Beobachtung vorhanden ist.
Macht das Sinn. Bitte beachten Sie auch einen Kommentar, wenn ich angeben müssen oder kann die Post in einem klareren/besseren Weg
Für Schleifen selbst sind nicht sehr performant in R Versuchen Sie, so viele von ihnen durch vektorisierte Funktionen zu ersetzen. – snaut
Wie viele Sekunden braucht der Code aus meiner Antwort für Ihre Daten? – jogo