Ich versuche eine R-Funktion zu schreiben, die einen Datensatz übernimmt und die Funktion plot() mit dem gelesenen Datensatz ausgibt Umgebung. Dies bedeutet, dass Sie nicht mehr attach() verwenden müssen, was eine gute Übung ist. Hier ist mein Beispiel:In R wird der folgende Fehler angezeigt: "Versuch, ein Objekt vom Typ 'closure' zu replizieren"
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
Hier ist der Fehler Ich erhalte:
Error in rep(yes, length.out = length(ans)) :
attempt to replicate an object of type 'closure'
ich einige andere Versionen ausprobiert, aber sie alle geben mir den gleichen Fehler. Was mache ich falsch?
EDIT: Ich realisiere, dass der Code nicht zu praktisch ist. Mein Ziel ist es, funktionale Programmierung besser zu verstehen. Ich habe ein ähnliches Makro in SAS geschrieben, und ich habe gerade versucht, sein Gegenstück in R zu schreiben, aber ich versage. Ich habe das nur als Beispiel gewählt. Ich denke, es ist ein ziemlich einfaches Beispiel und doch funktioniert es nicht.
Was Ihr Code versucht zu tun, zu unkonventionell. Können Sie sagen, was Sie erreichen wollen? – asb