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

peter dalgaard pdalgd at gmail.com
Thu Sep 30 17:15:58 CEST 2010


On Sep 30, 2010, at 16:19 , Niels Richard Hansen wrote:

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

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

--- not anymore, it seems: ---
> setClass("A", representation(a = "numeric"))
[1] "A"
> B <- list()
> myA <- new("A", a = 1)
> B$otherA <- myA
> B$otherA at a <- 2
> myA at a
[1] 1
> sessionInfo()
R version 2.12.0 alpha (2010-09-29 r53067)
Platform: x86_64-apple-darwin10.4.0 (64-bit)

So somewhere in the last 162 commits, this got caught. Probably r52914, but it looks like it hasn't been recored in NEWS (and it should be as this was apparently a live bug, not an obscure corner case):

r52914 | luke | 2010-09-15 19:06:13 +0200 (Wed, 15 Sep 2010) | 4 lines

Modified applydefine to duplicate if necessary to ensure that the
assignment target in calls to assignment functions via the complex
assignment mechanism always has NAMED == 1.




-- 
Peter Dalgaard
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



More information about the R-devel mailing list