小编mah*_*hin的帖子

在R中,出现以下错误:"尝试复制'闭包'类型的对象"

我正在尝试编写一个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
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

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

我尝试了其他几个版本,但它们都给了我同样的错误.我究竟做错了什么?

编辑:我意识到代码不太实用.我的目标是更好地理解函数式编程.我在SAS写了一个类似的宏,我只是想在R中编写它的对应物,但我失败了.我刚刚选这个作为例子.我认为这是一个非常简单的例子,但它不起作用.

closures functional-programming r

14
推荐指数
1
解决办法
3万
查看次数

标签 统计

closures ×1

functional-programming ×1

r ×1