Hi all, I made sure that it's "env$sRes1$nPositionsOptimizedM" that's correct... not the "env$sRes1$nPositionsOptimized"... But it seems both point to the same memory area... This is very dangerous because I have used naming conventions such as: MyLongVariableNameForA MyLongVariableNameForB MyLongVariableNameForC ... ... Then if internally they are actually the same thing then all my programs messed up... Any thoughts?>env=new.env()>load("MyResults.rData", env)>identical(env$sRes1$nPositionsOptimized, env$sRes1$nPositionsOptimizedM)[1] TRUE [[alternative HTML version deleted]]
On 13/02/2012 2:00 PM, Michael wrote:> Hi all, > > I made sure that it's "env$sRes1$nPositionsOptimizedM" that's correct... > > not the "env$sRes1$nPositionsOptimized"... > > But it seems both point to the same memory area...How did you determine that? The test below just shows that they contain the same thing.> This is very dangerous because I have used naming conventions such as: > > MyLongVariableNameForA > MyLongVariableNameForB > MyLongVariableNameForC > ... > ... > > Then if internally they are actually the same thing then all my programs > messed up... > > Any thoughts? > > >env=new.env() > > >load("MyResults.rData", env) > > >identical(env$sRes1$nPositionsOptimized, env$sRes1$nPositionsOptimizedM) > > [1] TRUEChanging one of them and seeing the other one change would show that they point to the same memory area. This can happen with environments: if you create env1 and set env2 <- env1, then changes to either environment will affect the other, because that's how environments work. That's not true of most of the other kinds of objects in R. (The exceptions are fairly exotic things that you are unlikely to use.) Duncan Murdoch
Replace the syntax List$Name with List[["Name"]] and see if things work better. '[[' does not do the partial matching that '$' does. E.g., x <- list(AB=10, BC=20, CD=30) x$A # returns 10 because "A" is the initial part of exactly one name in x, "AB" x[["A"]] # returns NULL However, if you have y <- list(AB=1, AC=2, AD=3) then y$A will return NULL because there is not a unique partial match to "A" among the names of y. Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com> -----Original Message----- > From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Michael > Sent: Monday, February 13, 2012 11:00 AM > To: r-help > Subject: [R] Puzzling... puzzling... puzzling... > > Hi all, > > I made sure that it's "env$sRes1$nPositionsOptimizedM" that's correct... > > not the "env$sRes1$nPositionsOptimized"... > > But it seems both point to the same memory area... > > This is very dangerous because I have used naming conventions such as: > > MyLongVariableNameForA > MyLongVariableNameForB > MyLongVariableNameForC > ... > ... > > Then if internally they are actually the same thing then all my programs > messed up... > > Any thoughts? > > >env=new.env() > > >load("MyResults.rData", env) > > >identical(env$sRes1$nPositionsOptimized, env$sRes1$nPositionsOptimizedM) > > [1] TRUE > > [[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.