Tôi đang cố gắng viết một hàm R lấy một tập dữ liệu và xuất ra hàm plot() với tập dữ liệu được đọc trong môi trường. Điều này có nghĩa là bạn không phải sử dụng attach() nữa, đó là thực hành tốt. Dưới đây là ví dụ của tôi:Trong R, nhận được lỗi sau: "cố gắng nhân rộng một đối tượng kiểu 'đóng'"
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
Đây là lỗi tôi nhận được:
Error in rep(yes, length.out = length(ans)) :
attempt to replicate an object of type 'closure'
Tôi đã thử nhiều phiên bản khác, nhưng tất cả họ đều cho tôi những lỗi tương tự. Tôi đang làm gì sai?
EDIT: Tôi nhận ra mã không quá thực tế. Mục tiêu của tôi là hiểu lập trình chức năng tốt hơn. Tôi đã viết một macro tương tự trong SAS, và tôi đã cố gắng để viết đối tác của nó trong R, nhưng tôi thất bại. Tôi chỉ chọn đây là một ví dụ. Tôi nghĩ rằng đó là một ví dụ khá đơn giản nhưng nó không hoạt động.
Mã của bạn đang cố gắng làm quá độc đáo. Bạn có thể nói những gì bạn đang buộc phải đạt được? – asb