Hi,

I thought I understood the change to lapply semantics resulting from this,

   https://bugs.r-project.org/bugzilla/show_bug.cgi?id=16093

However, would someone care to explain why this does not work?

   > L <- list(a=1, b=2, c=3)
   > str(lapply(L, function(x){ y <- substitute(x); force(x); eval(y) }))
   Error in eval(y) : object 'X' not found

Basically, my primary goal is to achieve the same result as,

   > str(lapply(L, function(x){ eval.parent(substitute(x)) }))
   List of 3
    $ a: num 1
    $ b: num 2
    $ c: num 3

but without having to resort to eval.parent as that seems to rely on an implementation detail of lapply.

My secondary goal is to understand why force(x) does not actually force the promise here,

   > str(lapply(L, function(x){ force(x); pryr::is_promise(x) }))
   List of 3
    $ a: logi TRUE
    $ b: logi TRUE
    $ c: logi TRUE
,
Regards
Ben

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to