[R] Is there a test for .Alias?
Henrik Bengtsson
hb at maths.lth.se
Thu Aug 2 18:35:58 CEST 2001
Thanks for your quick reply!
I know you have said it before (r-help list, March 23, 2001): .Alias "should
not be used", but... is it not even "allowed" in cases where you have a
function modifying one single element in a HUGE data frame? I know that you
know about this, but if you are not using .Alias and trying to do the
following on a small system you will run out of memory and/or it take a long
time:
foo <- function(x) {
x$a[1] <- x$a[1] + 1
x
}
bar <- function(x) {
x <- .Alias(x)
x$a[1] <- x$a[1] + 1
}
df <- data.frame(a=rep(0,1e6))
object.size(df) # 20,000,356 bytes
gc()
m0 <- memory.size()
system.time(df <- foo(df)) # NA NA 29.45 NA NA
m1 <- memory.size()
m1-m0 # 24,000,224 bytes (!!!)
gc()
m0 <- memory.size()
system.time(bar(df)) # NA NA 0 NA NA
m1 <- memory.size()
m1-m0 # 72 bytes
I have seen on at least two different WinMe systems with default virtual
memory setup ("Lets Windows manage my virtual settings. (Recommended)") and
with clean [R] installations that the maximum memory limit for [R] is the
size of the RAM (the full, not the available). I believe this is what most
Windows are setup as. I am myself aware of this and my machine has a large
RAM so for me it is not a problem, but I am writing a package that will be
used by people with less computer skills and by experience I know that
people will just stop using something that gives an error and it doesn't
matter how great the package is.
This is why I am eager to use .Alias (or something else). However, if .Alias
is a "dead end" I wont use it. I can see different reasons for not using
.Alias, such as (1) strange behavior, (2) .Alias is not well defined, (3)
not compatible with S-Plus (?). I am also aware of thing like object.size(x)
will turn 'x' into a copy if 'x' was aliased.
Grateful for all help!
Henrik Bengtsson
Statistics Dept.
Lund University/UC Berkeley
hb at maths.lth.se
> -----Original Message-----
> From: Thomas Lumley [mailto:tlumley at u.washington.edu]
> Sent: Thursday, August 02, 2001 8:29 AM
> To: Henrik Bengtsson
> Cc: r-help at stat.math.ethz.ch
> Subject: Re: [R] Is there a test for .Alias?
>
>
> On Wed, 1 Aug 2001, Henrik Bengtsson wrote:
>
> > Is there a way to check if a variable is aliases to another? Example:
> >
> > x <- list(a=1, b=2, c=3)
> > y <- .Alias(x)
> >
> > Can one tell that 'y' is an alias to another object? By the way, is it a
> > correct statement to say that 'y' is aliased TO 'x', or is both
> 'x' and 'y'
> > said to be aliased to an internal object?
>
> The correct statement is that, since .Alias shouldn't be used, 'y' is not
> aliased to 'x'.
>
> You can't tell except in internal C code by checking that the objects are
> pointers to the same place.
>
>
> -thomas
>
> Thomas Lumley Asst. Professor, Biostatistics
> tlumley at u.washington.edu University of Washington, Seattle
>
>
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list