Re: [Rd] S4 methods and polymorophism

From: Wolski <wolski_at_molgen.mpg.de>
Date: Wed 22 Sep 2004 - 18:37:25 EST

Hi!
Have you tried ?

setMethod("length",signature(object="Collection"),function(object){ length(object@ID)})

                            같같같같같

And I would use R.2.0 instead of R.1.9

/E

On 9/22/2004 at 10:21 AM Eric Lecoutre wrote:

>>>Hello R Power Users,
>>>
>>>There is a rather large introduction you may skip to go directly to
>>>my question about S4 classes.
>>>
>>>I am working on some toy code to help me get in through S4 classes.
>>>Doing this homework, I have some questions about S4 classes. I have
>>>carefully read available help and some additional material such as
>>>Robert
>>>Gentleman's slides and special attention to "Programming with Data".
>>>
>>>I am working with R 1.9 on Windows.
>>>
>>>Final goal is the complete rewriting of my R2HTML package from scratch
>>>to
>>>provide to users a convenient way to describe their output and to allow
>>>different output format (provided by special functions - drivers, " la"
>>>Sweave - HTML, LaTeX, XML...).
>>>
>>>As BillGates guys often have good ideas (or find or buy them), I take
>>>the
>>>structure of Word documents as a starting point.
>>>
>>>A document will be a collection of Objects, which will be either a
>>>standard
>>>R object or a graph, in both cases with some Formatting Options (FO)
>>>added.
>>>Formatting Options (a class) is a list of named components like
>>>(font-size:
>>>16, forecolor: darkred).
>>>
>>>Here is what I have for the moment:
>>>
>>> > setClassUnion("ROMA_ID", c("NULL","character"))
>>> > setClass("Objects",representation("list",ID="ROMA_ID"))
>>>
>>>ie: Objects is a list (there will be objects of class "Object" without
>>>"s")
>>>and ID provided to all objects.
>>>
>>>Then, as I will manipulate several such collections, such as Documents,
>>>Graphs, and so on, I define the virtual class Collection. At the moment:
>>>
>>> > setClassUnion("Collection",c("Objects","Documents","Graphs"))
>>>
>>>Then, I follow Chambers's samples to add some functionality such as
>>>show()
>>>functions and manipulations. A "+" method applied on two "Object"
>>>creates a
>>>new Objects collection.
>>>
>>>As you can see from this output, both the definition of the mehod for
>>>"+"
>>>and for "show" are correct:
>>>
>>>
>>>---------- output ---------------
>>> > Object(1)+Object("Oui")
>>><ROMA> Collection of Objects: 2 objects.
>>>
>>>ID: numeric
>>> <ROMA> Object
>>> Classe: numeric
>>> FO: alignment
>>>
>>>ID: character
>>> <ROMA> Object
>>> Classe: character
>>> FO: font;fontsize;fontcolor;alignment
>>>---------- output ---------------
>>>
>>>
>>>
>>>I have succedded adding a method to generic "+" operator, which is
>>>initially defined as:
>>>
>>> > getMethod("+")
>>>.Primitive("+")
>>>
>>>As I understand it, the fact that it is a .Primitive call ensures the
>>>default method for any extendion (that is: we can add methods).
>>>
>>>Now, I try to add a method for length to handle "Collection" classes.
>>>
>>> > getMethod("length")
>>>.Primitive("length")
>>>
>>>
>>>*** QUESTION:
>>>
>>>
>>>I dont undertand the following error message when trying to define this
>>>method:
>>>
>>> > setMethod("length","Collection",function(object){ length(object@ID)})
>>>Error in conformMethod(signature, mnames, fnames, f) :
>>> In method for function "length": Formal arguments omitted in
>>>the
>>>method definition cannot be in the signature (x = "Collection")
>>>
>>>How is it possible to extend length to my own class?
>>>
>>>
>>>
>>>Be HappyR and HappyR again,
>>>
>>>Eric
>>>
>>>Eric Lecoutre
>>>UCL / Institut de Statistique
>>>Voie du Roman Pays, 20
>>>1348 Louvain-la-Neuve
>>>Belgium
>>>
>>>tel: (+32)(0)10473050
>>>lecoutre@stat.ucl.ac.be
>>>http://www.stat.ucl.ac.be/ISpersonnel/lecoutre
>>>
>>>If the statistics are boring, then you've got the wrong numbers. -Edward
>>>Tufte
>>>
>>>______________________________________________
>>>R-devel@stat.math.ethz.ch mailing list
>>>https://stat.ethz.ch/mailman/listinfo/r-devel

Dipl. bio-chem. Witold Eryk Wolski             @         MPI-Moleculare Genetic   
Ihnestrasse 63-73 14195 Berlin                'v'    
tel: 0049-30-83875219                        /   \       
mail: witek96_at_users.sourceforge.net        ---W-W----    http://www.molgen.mpg.de/~wolski 
      wolski@molgen.mpg.de

______________________________________________
R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Wed Sep 22 18:41:52 2004

This archive was generated by hypermail 2.1.8 : Fri 18 Mar 2005 - 09:00:21 EST