[R] S4; Setter function is not chaning slot value as expected

Simon Zehnder szehnder at uni-bonn.de
Sat Nov 9 17:22:29 CET 2013


If you want to set a slot you have to refer to it:

ac at CustomerID <- “54321” 

or you use your setter:

ac <- CustomerID(ac, “54321”)

What you did was creating a new symbol CustomerID referring to the String “54321”
CustomerID <- “54321”
CustomerID
[1] “54321”

Best

Simon

On 09 Nov 2013, at 15:31, daniel schnaider <dschnaider at gmail.com> 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<-")})
>    setReplaceMethod("CustomerID", "Account", function(obj, id){
>        obj at 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 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.



More information about the R-help mailing list