Ich habe festgestellt, dass einige Pakete erlauben, Symbolnamen zu übergeben, die möglicherweise nicht einmal in dem Kontext gültig sind, in dem die Funktion aufgerufen wird. Ich frage mich, wie das funktioniert und wie ich es in meinem eigenen Code verwenden kann? HierÜbergabe eines Variablennamens an eine Funktion in R
ist ein Beispiel mit ggplot2:
a <- data.frame(x=1:10,y=1:10)
library(ggplot2)
qplot(data=a,x=x,y=y)
x
und y
nicht in meinem Namensraum existieren, aber ggplot versteht, dass sie einen Teil des Datenrahmens sind und verschiebt deren Auswertung zu einem Kontext, in dem sie sind gültig. Ich habe versucht, das gleiche tun:
b <- function(data,name) { within(data,print(name)) }
b(a,x)
Doch dies scheitert kläglich:
Error in print(name) : object 'x' not found
Was mache ich falsch? Wie funktioniert das?
Hinweis: Das ist nicht ein Duplikat Pass variable name to a function in r
Könnten Sie ein bisschen mehr (ein paar Kommentare hinzufügen)? Dieser Ansatz klingt interessant. Beachten Sie, dass es beim Stack-Overflow keine "alten Threads" gibt, Informationen bleiben für Leute wie Sie und mich erhalten, die ihre Fragen googeln. –
@static_rtti Ich habe die Antwort aktualisiert. HTH –
Dies ist ein Juwel einer Antwort, danke. Wenn es hilft, dann gibt 'var <- eval (substitute (var), data)' Ihnen das Objekt, dann gibt 'var.name <- substitute (var)' Ihnen den Variablennamen, der in der Funktion verwendet wird. – drstevok