[R] Problem with S4 generic function print

Martin Morgan mtmorgan at fhcrc.org
Tue Jan 12 01:19:40 CET 2010


Hi Sven --

Sven Laur wrote:
> First, if I have an S4 class boo should I define S3 method for printing
> print.boo(..) or should I define S4 method print(..).
> I mainly need to define print function only because some user might call
> it and then I would like to dispatch the call to
> right function instead.

Usually one would define a 'show' method on S4 objects; no need for
print.boo

setMethod(show, "boo", function(object) cat("Boo!\n"))

The user gets to the right place even with print(new('boo')). Can't help
with the rest of your post.

Martin

> 
> Second, it seems that by defining S4 generic function print, it is
> possible to break argument hinting on the status bar.
> Namely, as I understand, the Mac OS X GUI client makes a call args() if
> something like
> 
> letter(
> 
> is typed to console. Since letter() function does not exists, it should
> return nothing to the status bar and nothing to
> console, as I as a user have not entered any call, yet. However, if S4
> generic print is defined, a mysterious error
> message
> 
> Error in args(letter) : no function to return from, jumping to top level
> 
> appears after typing
> 
> letter()
> 
> without return('\n') to console. It seems bizarre...
> 
> System is
> 
> Mac OS X 10.5.8 (PowerPC)
> R 2.9.1 GUI 1.28 Tiger build 32-bit (5444)
> R version 2.9.1 (2009-06-26)
> 
> Minimal amount of code to get the behaviour is
> 
>  if(!isGeneric("print")) {setGeneric("print",useAsDefault=print)}
> 
> What is the underlying problem?
> 
> Sven Laur
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.


-- 
Martin Morgan
Computational Biology / Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N.
PO Box 19024 Seattle, WA 98109

Location: Arnold Building M1 B861
Phone: (206) 667-2793



More information about the R-help mailing list