Sto provando a scrivere una funzione R che prende un set di dati e restituisce la funzione plot() con il set di dati letto nel suo ambiente. Ciò significa che non devi più usare attach(), che è una buona pratica. Ecco il mio esempio:In R, ottenendo il seguente errore: "tentativo di replicare un oggetto di tipo 'chiusura'"
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
Ecco l'errore che sto ricevendo:
Error in rep(yes, length.out = length(ans)) :
attempt to replicate an object of type 'closure'
Ho provato diverse altre versioni, ma tutti mi danno lo stesso errore. Che cosa sto facendo di sbagliato?
EDIT: Mi rendo conto che il codice non è troppo pratico. Il mio obiettivo è quello di capire meglio la programmazione funzionale. Ho scritto una macro simile in SAS, e stavo solo cercando di scrivere la sua controparte in R, ma sto fallendo. Ho appena scelto questo come esempio. Penso che sia un esempio piuttosto semplice e tuttavia non funziona.
Che il codice sta cercando di fare è troppo convenzionale. Puoi dire cosa stai cercando di raggiungere? – asb