Я заметил, что довольно много пакетов позволяют передавать имена символов, которые могут быть даже недействительными в контексте вызова функции. Мне интересно, как это работает и как я могу использовать его в своем собственном коде?
Вот пример с ggplot2:
a <- data.frame(x=1:10,y=1:10)
library(ggplot2)
qplot(data=a,x=x,y=y)
x
и y
не существуют в моем пространстве имен, но ggplot понимает, что они являются частью фрейма данных и откладывает их оценку в контексте, в котором они действительны. Я пробовал сделать то же самое:
b <- function(data,name) { within(data,print(name)) }
b(a,x)
Однако это терпит неудачу:
Error in print(name) : object 'x' not found
Что я делаю неправильно? Как это работает?
Примечание: это не дубликат передать имя переменной функции в r