[R] Printing upon calling a function

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Mon Nov 30 12:00:48 CET 2020


On 30/11/2020 5:41 a.m., Stefan Evert wrote:
> 
>> On 30 Nov 2020, at 10:41, Steven Yen <styen using ntu.edu.tw> wrote:
>>
>> Thanks. I know, my point was on why I get something printed by simply doing line 1 below and at other occasions had to do line 2.
>>
>> me.probit(obj)
> 
> That means the return value of me.probit() has been marked as invisible, so it won't auto-print.  You have to use an explicit print
> 
> 	print(me.probit(obj))
> 
> or use your work-around to convince R that you actually meant to print the output.
> 
> If you dig through the full code of me.probit(), you'll probably find the function invisible() called somewhere.
> 

I think you misread his post.  "me.probit(obj)" on its own *did* print. 
  It was when he assigned it to a variable using "v <- me.probit(obj)" 
that it didn't.  Assignments are almost always invisible in R.

The other thing that people sometimes find confusing is that evaluating 
expressions that are visible are the top level doesn't make them print 
when they are nested in a block of code.  Usually this happens in a 
function, e.g. typing a number normally makes it visible, but

f <- function() {
   1
   2
}
f()

doesn't print 1, it only prints 2, and that happens because 2 is the 
return value of the function.

Duncan Murdoch



More information about the R-help mailing list