Zauważyłem, że sporo pakietów pozwala przekazywać nazwy symboli, które mogą nie być poprawne nawet w kontekście, w którym funkcja jest wywoływana. Zastanawiam się, jak to działa i jak mogę go użyć w moim własnym kodzie?Przekazywanie nazwy zmiennej do funkcji w R
Oto przykład z ggplot2:
a <- data.frame(x=1:10,y=1:10)
library(ggplot2)
qplot(data=a,x=x,y=y)
x
i y
nie istnieją w moim nazw, ale ggplot rozumie, że są one częścią ramki danych i opóźnia ich oceny w kontekście, w którym są ważne. Próbowałem robić to samo:
b <- function(data,name) { within(data,print(name)) }
b(a,x)
to jednak nie zdało egzaminu:
Error in print(name) : object 'x' not found
Co robię źle? Jak to działa?
Uwaga: to nie duplikatem Pass variable name to a function in r
Czy mógłbyś podać nieco więcej szczegółów (dodać kilka komentarzy)? To podejście brzmi interesująco. Zauważ, że nie ma "starych wątków" na przepełnieniu stosu, informacja jest zachowywana dla ludzi takich jak ty i ja, którzy pytają google. –
@static_rtti Zaktualizowałem odpowiedź. HTH –
To jest klejnot odpowiedzi, dziękuję. Jeśli to pomaga, to jeśli 'var <- eval (substitute (var), data)' daje obiekt, to 'var.name <- substitute (var)' podaje nazwę zmiennej przekazanej do użycia w funkcji. – drstevok