Ich habe Liste von Funktionen, die auch eine benutzerdefinierte Funktion enthält:wie Variablennamen aus der Liste zu bekommen
> fun <- function(x) {x}
> funs <- c(median, mean, fun)
Ist es möglich, Funktionsnamen als Strings aus dieser Liste zu bekommen? Meine einzige Lösung war bisher Vektor zu schaffen, die Funktionsnamen als Strings enthält:
> fun.names <- c("median", "mean", "fun")
Wenn ich Variablennamen bekommen verwende ich diesen Trick tun (wenn dies nicht mich korrigieren, korrigieren Sie bitte), aber wie Sie können es funktioniert nur für eine Variable nicht für die Liste:
> as.character(substitute(mean))
[1] "mean"
> as.character(substitute(funs))
[1] "funs"
Gibt es etwas, das auch für die Liste funktioniert? Gibt es einen Unterschied, wenn die Liste Funktionen oder Datentypen enthält?
EDIT: Ich muss diese Liste von Funktionen (plus andere Daten) an eine andere Funktion übergeben. Dann werden diese Funktionen aus der Liste auf das Dataset angewendet. Funktionsnamen werden benötigt, denn wenn in der Liste mehrere Funktionen übergeben werden, möchte ich feststellen können, welche Funktion angewendet wurde. Bisher habe ich das schon mit:
window.size <- c(1,2,3)
combinations <- expand.grid(window.size, c(median, mean))
combinations <- cbind(combinations, rep(c("median","mean"), each = length(window.size)))
Etwas mehr Hintergrund, wie die Liste erstellt wird, würde helfen, weil die übliche Lösung wäre, die Liste mit Namen an erster Stelle zu erstellen. Es würde also helfen zu sehen, ob/warum Sie das in diesem Fall nicht tun können. – joran
Wie @joran sagt, wirst du "Namen" haben, wenn du 'Spaß <-c (Median = Median, Mittelwert = Mittelwert, Spaß = Spaß)' – HubertL
schreibst Für eine wirklich exotische Variante, da du unsere Fragen nicht angesprochen hast, [this] (http://stackoverflow.com/q/21011672/324364) Frage zeigt, wie eine Funktion geschrieben wird, die eine "automatisch" benannte Liste erstellt. – joran