Hello,
i am trying to understand the difference between S3 function print and 
S4 method.

My main problem is that i need to count the environment ("frames") (i 
use /eval/() afterwards with /parent.frame/() ).

If I use a S4 method/print/, a 'hidden' environment seem to appears.

It is not the case, with generic methods declared in the methods package 
such as /show/ .

I would like to understand the difference and how to declare them in a 
namespace (avoiding this +1 frame if possible).

Here a small example:

setClass('test',
         representation=representation(a="numeric"))

testobject <- new(Class='test', a=1)

setMethod("show",
           signature='test',
           definition=function(object){
             aa <- sys.nframe()
             print(aa)
           })

testobject ##show : 2

print.test <- function(x){
     aa <- sys.nframe()
     print(aa)
   }

print(testobject) #2

setMethod("print",
           signature='test',
           definition=function(x){
             aa <- sys.nframe()
             print(aa)
           })

print(testobject) # 3, what happened?


Thanks,

Alice Julien-Laferriere


	[[alternative HTML version deleted]]

