Manuel Castejón Limas
2011-May-10 23:44 UTC
[Rd] Reference Classes copy(shallow=FALSE) unexpected behavior.
Dear all, I''ve just discovered the ''Reference Classes''. In a previous attempt ---a year ago--- to re-implement in a Object Oriented fashion the AMORE package using S4 classes I strongly felt the need of such capability. It''s great to have the Reference Classes now available. Along with the discovery of the Rcpp package, this new programming paradigm has boosted my interest in rewriting that package. Nevertheless, I have found a surprising behavior in the $copy(shallow=FALSE) method. Let''s have a look at the results which I believe are self-explanatories. The ".Data" field is a list which contains objects from the "Con" class ---connections for what is worth---.> p$copy(shallow=FALSE) -> k > p$.Data[[1]] An object of class "Con" <environment: 0x15a370c4> [[2]] An object of class "Con" <environment: 0x15b6ed94> [[3]] An object of class "Con" <environment: 0x15b4ba08>> k$.Data[[1]] An object of class "Con" <environment: 0x15a370c4> [[2]] An object of class "Con" <environment: 0x15b6ed94> [[3]] An object of class "Con" <environment: 0x15b4ba08> As you can see the elements of both lists share the memory addresses while I was expecting the shallow=FALSE to perform a deep copy and create copies of those objects as well. As I''m new with reference classes this causes me a lot of confussion. Is this a bug, is this a feature? Any insights about the matter are welcome Thanks in advance -M -- Manuel Castejón Limas University of León, Spain manuel.castejon@unileon.es [[alternative HTML version deleted]]
Hadley Wickham
2011-May-11 12:00 UTC
[Rd] Reference Classes copy(shallow=FALSE) unexpected behavior.
2011/5/10 Manuel Castej?n Limas <manuel.castejon at unileon.es>:> Dear all, > > I've just discovered the 'Reference Classes'. > In a previous attempt ---a year ago--- to re-implement in a Object Oriented > fashion the AMORE package using S4 classes I strongly felt the need of such > capability. It's great to have the Reference Classes now available. Along > with the discovery of the Rcpp package, this new programming paradigm has > boosted my interest in rewriting that package. > > Nevertheless, I have found a surprising behavior in the $copy(shallow=FALSE) > method. Let's have a look at the results which I believe are > self-explanatories. The ".Data" field is a list which contains objects from > the "Con" class ?---connections for what is worth---.What sort of class is the Con class? S4 or reference? Hadley -- Assistant Professor / Dobelman Family Junior Chair Department of Statistics / Rice University http://had.co.nz/