Bir veri kümesi alan bir R işlevi yazmaya çalışıyorum ve plot() işlevini, içindeki veri kümesinde okuyarak çıktıyorum. ortamı. Bu, attach() öğesini artık kullanmak zorunda olmadığınız anlamına gelir, bu iyi bir uygulamadır.R, aşağıdaki hatayı alıyorum: "'kapatma' türünde bir nesneyi çoğaltma girişiminde bulunma"
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
İşte alıyorum hata var: İşte benim örnek
Error in rep(yes, length.out = length(ans)) :
attempt to replicate an object of type 'closure'
Birkaç diğer versiyonlarını denedim, ama hepsi bana aynı hatayı verir. Neyi yanlış yapıyorum? EDIT: Kodun çok pratik olmadığını anlıyorum. Amacım, işlevsel programlamayı daha iyi anlamak. SAS'ta benzer bir makro yazdım, ve onun muadilini R'ye yazmaya çalışıyordum, ama başarısız oluyorum. Bunu bir örnek olarak seçtim. Bence oldukça basit bir örnek ve işe yaramıyor.
deparse(substitute())
yerinedeparse(quote())
istiyorum ne kodunuzu yapmaya çalışıyor çok sıradışı olduğunu düşünüyorum. Neyi başarmak için söylediğinizi söyleyebilir misin? – asb