[Rd] WISH: eval() to preserve the "visibility" (now value is always visible)
Duncan Murdoch
murdoch.duncan at gmail.com
Sat Feb 7 18:58:14 CET 2015
On 07/02/2015 12:40 PM, Henrik Bengtsson wrote:
> Would it be possible to have the value of eval() preserve the
> "visibility" of the value of the expression?
>
>
> "PROBLEM":
>
> # Invisible
>> x <- 1
>
> # Visible
>> eval(x <- 2)
> [1] 2
>
>
> "TROUBLESHOOTING":
>> withVisible(x <- 1)
> $value
> [1] 1
> $visible
> [1] FALSE
>
>> withVisible(eval(x <- 2))
> $value
> [1] 2
> $visible
> [1] TRUE
>
>
> WORKAROUND:
> eval2 <- function(expr, envir=parent.frame(), ...) {
> res <- eval(withVisible(expr), envir=envir, ...)
> value <- res$value
> if (res$visible) value else invisible(value)
> }
>
>> x <- 1
>> eval(x <- 2)
> [1] 2
>> eval2(x <- 3)
>> x
> [1] 3
What's wrong with the workaround?
Duncan Murdoch
More information about the R-devel
mailing list