Thanks Martin. It worked well.
Two new questions related to the same subject.

1) Why create this semantic of a final argument name specifically names
value?
2) Regarding performance. When CustomerID(ac) <- "54321" runs, does it only
change the slot from whatever it was to 54321, or it really create another
object and change all the value of all slots, keeping technically all the
other values equal and changing 54321?

thanks..


On Sat, Nov 9, 2013 at 4:20 PM, Martin Morgan <mtmorgan@fhcrc.org> wrote:

> On 11/09/2013 06:31 AM, daniel schnaider wrote:
>
>> It is my first time programming with S4 and I can't get the setter fuction
>> to actually change the value of the slot created by the constructor.
>>
>> I guess it has to do with local copy, global copy, etc. of the variable -
>> but, I could't find anything relevant in documentation.
>>
>> Tried to copy examples from the internet, but they had the same problem.
>>
>> # The code
>>      setClass ("Account" ,
>>                 representation (
>>                 customer_id = "character",
>>                 transactions = "matrix")
>>      )
>>
>>
>>      Account <- function(id, t) {
>>              new("Account", customer_id = id, transactions = t)
>>              }
>>
>>
>>      setGeneric ("CustomerID<-", function(obj,
>> id){standardGeneric("CustomerID<-")})
>>
>
> Replacement methods (in R in general) require that the final argument (the
> replacement value) be named 'value', so
>
>     setGeneric("CustomerID<-",
>         function(x, ..., value) standardGeneric("CustomerID"))
>
>     setReplaceMethod("CustomerID", c("Account", "character"),
>         function(x, ...., value)
>     {
>         x@customer_id <- value
>         x
>     })
>
> use this as
>
>    CustomerID(ac) <- "54321"
>
>
>
>       setReplaceMethod("CustomerID", "Account", function(obj, id){
>>          obj@customer_id <- id
>>          obj
>>          })
>>
>>          ac <- Account("12345", matrix(c(1,2,3,4,5,6), ncol=2))
>>          ac
>>          CustomerID <- "54321"
>>          ac
>>
>> #Output
>>          > ac
>>          An object of class "Account"
>>          Slot "customer_id":
>>          [1] "12345"
>>
>>          Slot "transactions":
>>               [,1] [,2]
>>          [1,]    1    4
>>          [2,]    2    5
>>          [3,]    3    6
>>
>> # CustomerID is value has changed to 54321, but as you can see it does't
>>          > CustomerID <- "54321"
>>
>
>           > ac
>>          An object of class "Account"
>>          Slot "customer_id":
>>          [1] "12345"
>>
>>          Slot "transactions":
>>               [,1] [,2]
>>          [1,]    1    4
>>          [2,]    2    5
>>          [3,]    3    6
>>
>>
>> Help!
>>
>>         [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help@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.
>>
>>
>
> --
> 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
>



-- 
Daniel Schnaider

SP Phone:  +55-11-9.7575.0822


ds@scaigroup.com
skype dschnaider
Linked In: http://www.linkedin.com/in/danielschnaider

w <http://www.arkiagroup.com/>ww.scaigroup.com

Depoimentos de clientes <http://www.scaigroup.com/Projetos/depoimentos>

Casos de Sucesso & Referências <http://www.scaigroup.com/Projetos>

SCAI Group no Facebook <http://facebook.scaigroup.com/>

SCAI Group no Twitter <http://twitter.scaigroup.com/>

SCAI Group no Google Plus <http://plus.scaigroup.com/>

	[[alternative HTML version deleted]]

