Я пытаюсь написать R-функцию, которая принимает набор данных и выводит функцию plot() с набором данных, который читается в его среде. Это означает, что вам больше не нужно использовать attach(), что является хорошей практикой. Вот мой пример:
mydata <- data.frame(a = rnorm(100), b = rnorm(100,0,.2))
plot(mydata$a, mydata$b) # works just fine
scatter_plot <- function(ds) { # function I'm trying to create
ifelse(exists(deparse(quote(ds))),
function(x,y) plot(ds$x, ds$y),
sprintf("The dataset %s does not exist.", ds))
}
scatter_plot(mydata)(a, b) # not working
Вот ошибка, которую я получаю:
Error in rep(yes, length.out = length(ans)) :
attempt to replicate an object of type 'closure'
Я попробовал несколько других версий, но все они дают мне ту же ошибку. Что я делаю неправильно?
EDIT: Я понимаю, что код не слишком практичен. Моя цель - лучше понять функциональное программирование. Я написал аналогичный макрос в SAS, и я просто пытался написать его копию в R, но я терпеть неудачу. Я просто взял это в качестве примера. Я думаю, что это довольно простой пример, но он не работает.