[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