[Rd] Assignment to a slot in an S4 object in a list seems to violate copy rules?

Niels Richard Hansen Niels.R.Hansen+lists at math.ku.dk
Thu Sep 30 16:19:45 CEST 2010


Dear R-developers

I came across the following issue, which I find strange:

setClass("A", representation(a = "numeric"))
B <- list()
myA <- new("A", a = 1)
B$otherA <- myA
B$otherA at a <- 2
myA at a

Assigning a new value to slot 'a' in the _copy_ of myA stored
in B$otherA changes the original value of myA -- this was
surprising to me, and I believe not supposed to be so. This
"copy-through" only happens once.

B$otherA at a <- 1
myA at a

Other ways to access the list entries (B[["otherB"]] and B[[1]]) seem
to work as expected, and it seems that the issue is related to the fact
that 'otherA' does not already exist in B.

Is there something I have missed? Thanks.

Best, Niels	

sessionInfo()

R version 2.12.0 Under development (unstable) (2010-09-13 r52905)
Platform: i386-apple-darwin9.8.0/i386 (32-bit)

locale:
[1] da_DK.UTF-8/da_DK.UTF-8/C/C/da_DK.UTF-8/da_DK.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base


-- 
Niels Richard Hansen                     Web:   www.math.ku.dk/~richard	
Associate Professor                      Email: Niels.R.Hansen at math.ku.dk
Department of Mathematical Sciences             nielsrichardhansen at gmail.com
University of Copenhagen                 Skype: nielsrichardhansen.dk	
Universitetsparken 5                     Phone: +45 353 20783 (office)	
2100 Copenhagen Ø                               +45 2859 0765 (mobile)
Denmark



More information about the R-devel mailing list