Re: [R] invisible() - does not return immediately as return() does

From: Seth Falcon <>
Date: Sat 12 Aug 2006 - 08:11:02 EST

Matthias Burger <> writes:

> Hi,
> I stumbled across the following (unexpected for me) behavior after
> replacing a return() statement in the middle of a function by invisible().
> Example:
> foo <- function() { cat("before\n"); return(); cat("after\n")}
> before
> foo2 <- function() { cat("before\n"); invisible(TRUE); cat("after\n")}
> before
> after
> I expected invisible to have the same behavior as return, namely
> immediately return execution to the calling environment.
> I rechecked ?invisible and ?return
> and here I read in section 'See Also'
> [...]
> 'invisible' for 'return(.)'ing _invisibly_.
> Do I just misunderstand what this implies?
> Put another way what is the intention behind invisible() continuing
> until the last statement before returning? ?invisible does not hint at
> this.

I can understand the confusion, but I think invisible is intended to return its argument "invisibly" and actually has nothing to do with returning from a function (except that is where you are going to use it almost always ;-).

So you want return(invisible(foo)) in the middle of a function.

The man page for invisible says:   

   Return a (temporarily) invisible copy of an object.

But the man page for return has the return(.)'ing _invisibly_ statement which I think is confusing.


+ seth mailing list PLEASE do read the posting guide and provide commented, minimal, self-contained, reproducible code. Received on Mon Aug 14 02:00:42 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Mon 14 Aug 2006 - 04:19:07 EST.

Mailing list information is available at Please read the posting guide before posting to the list.