Frage:
Wie kann ich herausfinden, welche Version einer Funktion aufgerufen wird? Zum Beispiel, wenn ich unique
auf ein data.frame anwende, nehme ich an, dass die Funktion unique.data.frame
aufgerufen wird. Es gibt jedoch keine Funktion unique.raster
, obwohl es eine raster::unique
gibt. Wenn ich aber z.B. trace(unique)
verwende, erhalte ich nur die Information, dass die Funktion unique
aufgerufen wird.
Ich möchte zum Beispiel bestätigen, dass bei Aufruf von unique(data.frame(1))
die Funktion unique.data.frame
aufgerufen wird.
Beispiel:
Ich habe Schwierigkeiten zu verstehen, warum unique(raster_object)
an der Befehlszeile funktioniert, aber nicht innerhalb einer Funktion. Offenbar wird innerhalb der Funktion unique.default
aufgerufen, daher möchte ich explizit angeben, welches `unique.&
Zum Beispiel funktioniert dies:
library(raster)
a <- rasterFromXYZ(data.frame(a=1:2,b=2:3,c=3:4))
unique(a)
Aber wenn ich dies in eine Funktion setze:
myfun <- function(){
a <- rasterFromXYZ(data.frame(a=1:2,b=2:3,c=3:4))
b <- crop(a, extent(c(1,2,3,4)))
unique(a)
}
auch wenn das Paket raster
als Abhängigkeit verwendet wird, nachdem ich das Paket erstellt und in einer neuen R-Sitzung geladen habe, erhalte ich den Fehler:
> myfun()
Error in unique.default(a) : unique() applies only to vectors
Auch wenn sessionInfo()
zeigt, dass das raster Paket geladen ist.
und wenn ich debug(unique)
benutze, scheint es mir nicht zu sagen, welche Funktion aufgerufen wird:
Browse[6]> unique(a)
Error in unique.default(a) : unique() applies only to vectors
Browse[6]> raster::unique(a)
debugging in: raster::unique(a)
debug: standardGeneric("unique")