Re: [R] Is there a diferent way to do this?

From: Gilvan Justino <giljustino_at_yahoo.com.br>
Date: Tue 29 Mar 2005 - 01:56:10 EST


Hi,  

Thanks for your reply.  

I found a sample at http://www.angelfire.com/tx4/cus/shapes/r.html  

I did the same with my class and now it is working ###
 setGeneric("setName<-",

            function(this, value)
            standardGeneric("setName<-")
            )
 setReplaceMethod("setName", "Partri",
           function(this, value)
           {
             this@name <- value
             this
           }
           )

##
I have other doubts:
a) The usual representation of a method calling in other languages (I mean, Java, Delphi) is:

   obj.method(<parameters>)
So, I believed that in R it was the same thing. Thats it, to call the method setName of my instance "x" I could write:

   x.setName("blablabla")  

The right way really is?

     method(instance) <- parameters
Thats it:

     setName(x) <- "blablabla" ?  

It sounds strange to me. Maybe because I used with other languages, but it doen´t seem legible to me this sintaxe.  

b) I realised I have to use the name "value" as the parameter name, what else it won´t work. Is that corret?  

c) and in the case I have two or more parameters. How should I do? I typed ?setReplaceMethod in RGui how you suggested, but it doesn´t bring any information about this instruction.  

Thanks again and sorry for my english mistakes. Gilvan Justino

Uwe Ligges <ligges@statistik.uni-dortmund.de> wrote: Gilvan Justino wrote:
> Hi,
>
> I started creating a small class but I'm courious about how it is working.
>
> To create a instance of my class "Partri" I write this at Rgui:
> x <- new("Partri", name="Gilvan")
>
> and to change the slot "name" of this instance, I write:
> setName(x, newname="Justino")
>
> It is not working, because when I type "x" at Rgui, it shows the initial value, which was "Gilvan". What I am doing wrong?
>
> I'll appreciate any king of help!
> Gilvan
>
>
> # Classe para representar um parâmetro
> setClass("Partri",
> # parâmetros
> representation( name="character"),
> # seção de inicialização
> prototype( name="undefined name" )
> )
>
> setGeneric("setName",
> function(object, newname,...)
> standardGeneric("setName"))
> setMethod("setName",
> signature(object="Partri",newname="character"),
> function(object, newname)
> {
> object@name = newname

You set the "name" in the environment of the method, but you don't assign it to the environment that you seem to expect erroneously. To see that it works, simply insert

print(object@name)

Instead, you want to write some non-standard replacement function. See ?setReplaceMethod and friends (you might want to take a look into the green book as well).

Uwe Ligges

> }
> )

>
>
> ---------------------------------
>
> ora!
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


        [[alternative HTML version deleted]]



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Tue Mar 29 02:07:02 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:30:56 EST