Ich bin ein Anfänger in R und Programmierung. Also denke ich, als die Frage ist einfach, aber ich kann die Antwort nicht finden oder es solus lösen.Eigene Funktion für fokale Statistik (fokal, "Raster" -Paket, R) gibt falsche Ausgabe
Ich habe das Raster (100 * 100 Zellen). Ich muss den Medianwert der harmonischen Größen durch 2D-DFT am sich bewegenden Fenster erhalten (zum Beispiel Größe des Fensters = 21). Ich habe die Fokusfunktion im Rasterpaket gefunden. Für diese Funktion kann ich eine eigene Funktion kodieren, die seria von Werten (Rasterwerte im Fenster) und einen individuellen Wert für das ganze Fenster zurückgibt.
r <- raster(matrix(rnorm(10000), nrow = 100, ncol = 100)) # creation of raster
win <- 21 # setting the window size
spectr <- function(d) {
return(median(abs(spec.fft(x = 1:win, y = 1:win, z = (d - mean(d)))$A)))
} # i think "d" - the matrix of raster values in the window border
focal(x = r, w = matrix(1, win, win), fun = spectr())
Der Ausgang: Fehler in spec.fft (x = 1: win, y = 1: win, z = (d - mean (d))): Argument "d" fehlt, wird mit nein Standard
Ich vermutete, dass Daten aus dem Fenster in der Funktion automatisch übertragen werden. Was ist der Fehler in meinem Code? Vielen Dank!
UPDATE. Für die Prüfung ist, müssen die Bibliothek „spektralen“ laden:
install.packages("spectral")
library(spectral)
Danke, Loki verwenden lassen! Es war wirklich einfach. Aber ich vermute, dass der Fehler in der Funktion "spectr" ist. Ihr Code funktioniert) –
Siehe die aktuelle Version. Ich habe meine Antwort bearbeitet – loki