我正在尝试编写一个 R 函数,该函数采用数据集并输出 plot() 函数以及在其环境中读取的数据集。这意味着您不必再使用 attach(),这是一种很好的做法。这是我的例子:
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
这是我得到的错误:
代表错误(是,length.out = length(ans)):尝试复制“闭包”类型的对象
我尝试了其他几个版本,但它们都给了我同样的错误。我究竟做错了什么?
编辑:我意识到代码不太实用。我的目标是更好地理解函数式编程。我在 SAS 中编写了一个类似的宏,我只是想在 R 中编写它的对应宏,但我失败了。我只是选择了这个作为例子。我认为这是一个非常简单的例子,但它不起作用。