[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