Ich habe, was ich dachte, wäre ein einfaches Problem, aber ich war nicht in der Lage, eine angemessene Antwort zu finden. Ich habe ein mehrdimensionales Array v[x,y,z]
und ich möchte eine Funktion auf das Array entlang der z Dimension mit einer Gruppierungsvariablen (Gruppe) anwenden. Hier ist ein Beispiel (in R):
Da die Gruppierungsvariable drei Ebenen hat ( a , b und c ), ist das Ergebnis ( out ) Ich suche ein Array von Dimension 3x3x3. Ich kann mit dem folgenden Code für das obige Beispiel erhalten:
%Vor%Meine Frage ist, ob es ein allgemeines Mittel gibt, das obige Ergebnis zu erhalten, das auf großdimensionale Arrays und lange Gruppierungsvektoren angewendet werden kann.
Die Verwendung des Paketrasters eignet sich möglicherweise besser für Ihre Anforderungen. Es verfügt über einen Code, der für die Verarbeitung von Fernerkundungsdaten optimiert ist, wobei auf die Verarbeitung in Blöcken geachtet wird. Betrachten Sie dieses Beispiel:
%Vor%Gibt einen Raster-Brick mit vier Layern zurück (ein Mittelwert für jedes Quartal):
%Vor%Ich hoffe, Sie können dies an Ihre Daten anpassen.
Dies ist viel einfacher, wenn Ihre Daten als Datenrahmen formatiert sind:
%Vor%Dann können Sie einfach Ihre Gruppierung anhängen ...
%Vor%... und nach dieser Gruppierung aufgeteilt:
%Vor% Die anonyme Funktion { ... }
wird einmal für jede Gruppe aufgerufen, wobei df
den zu dieser Gruppe gehörenden Subdatenrahmen enthält. Hier könnten Sie die Daten mit einer ähnlichen Maschine neu kombinieren und zu einer Matrix zusammenfassen. Die Funktion sollte ein Array von Dimensionen 3x3x1 zurückgeben, die durch daply
verkettet werden, um das gewünschte Ergebnis zu bilden.
Tags und Links r