Próbuję napisać funkcję R, która pobiera zestaw danych i wyprowadza funkcję plot() z odczytanym zestawem danych środowisko. Oznacza to, że nie musisz już używać funkcji attach(), co jest dobrą praktyką. Oto mój przykład:W R, pojawia się następujący błąd: "próba replikacji obiektu typu" zamknięcie ""
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
oto błąd Dostaję:
Error in rep(yes, length.out = length(ans)) :
attempt to replicate an object of type 'closure'
Próbowałem kilka innych wersji, ale wszystkie one dają mi ten sam błąd. Co ja robię źle?
EDYCJA: Rozumiem, że kod nie jest zbyt praktyczny. Moim celem jest lepsze zrozumienie programowania funkcjonalnego. Napisałem podobne makro w SAS i próbowałem napisać jego odpowiednik w R, ale zawodzę. Po prostu wybrałem to jako przykład. Myślę, że to całkiem prosty przykład, a mimo to nie działa.
Jaki kod stara się zrobić zbyt niekonwencjonalny. Czy możesz powiedzieć, co chcesz osiągnąć? – asb