[Long example of matrix() wasting memory
 by Martin Maechler (MM) snipped]
A minor point perhaps, but  I think there is an error
in your calculations.
If I understand correctly, the problem is that matrix()
assigns a local copy of its answer before returning it.
So  a version which does not do this ...
function (data = NA, nrow = 1, ncol = 1, byrow = FALSE) 
{
    if (missing(nrow)) 
        nrow <- ceiling(length(data)/ncol)
    else if (missing(ncol)) 
        ncol <- ceiling(length(data)/nrow)
    .Internal(matrix(data, nrow, ncol, byrow))
}
should do better 
Using commands like
rm(X); n <- ... ; p <- 20; X <- matrix(rnorm(n*p), n,p); gc()
the largest value of n I could use successfully was about
18000, which still less than what you suggest,
MM> Since we have 747 thousands of them , 
MM> constructing X the double size (400'000) shouldn't be a problem
...
and only 50% greater than what you can do with the standard matrix()
function (n ~ 12000).
I think the answer is that your calculations did not take
into account the argument to matrix - rnorm(n*p) - which
also temporarily takes up as much memory as the final matrix.
With trivial data you can do better:
rm(X); n <- ... ; p <- 20; X <- matrix(0, n,p); gc()
You can assign up to n ~ 37000 with the standard matrix()
function and n ~ 74000 with the modified version, which
is the expected 100% improvement.
MM>There seem to be worse problems when use 
MM>
MM>     var(x)
MM>
MM>and x is one of those huge  n x p  matrices...
I couldn't assign a matrix that was big enough to crash var().
Is there a problem here? The fact that the default value of 
y is x is not a problem because of lazy evaluation.
If you assigned y in the body of the function ...
function (x, y, na.rm = FALSE, use) 
{
    if (missing(y)) 
        y <- x
    if (missing(use)) 
        use <- if (na.rm) 
            "complete.obs"
        else "all.obs"
    cov(x, y, use = use)
}
then you would have problems, but this isn't the case.
What am I missing?
Martyn
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel 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-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._