Dans R, vous obtenez l'erreur suivante: "tentative de réplication d'un objet de type" fermeture ""

Je suis en train d'écrire une fonction R qui prend un ensemble de données et les sorties de l'intrigue() fonction avec l'ensemble de données à lire dans son environnement. Cela signifie que vous n'avez pas à utiliser attach() plus, ce qui est une bonne pratique. Voici mon exemple:

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

Voici l'erreur que je reçois:

Error in rep(yes, length.out = length(ans)) : 
  attempt to replicate an object of type 'closure'

J'ai essayé plusieurs autres versions, mais ils ont tous de me donner la même erreur. Ce que je fais mal?

EDIT: je me rends compte que le code n'est pas trop pratique. Mon but est de comprendre la programmation fonctionnelle mieux. J'ai écrit une macro similaire dans le SAS, et j'essayais juste d'écrire son homologue dans R, mais je ne suis pas. J'ai juste pris cela comme un exemple. Je pense que c'est un exemple assez simple et pourtant ça ne fonctionne pas.

source d'informationauteur mahin | 2013-07-16