On Wed, Sep 26, 2007 at 10:52:28AM -0700, Byron Ellis wrote: > For the most part, doing anything to an R object result in it's > duplication. You generally have to do a lot of work to NOT copy an R > object.
Thank you for your response. Unfortunately, you are right. For example, the allocated memory determined by top command on Linux may change during a session as follows: a <- matrix(as.integer(1),nrow=14100,ncol=14100) # 774m a[1,1] <- 0 # 3.0g gc() # 1.5g In the current applicatin, I modify the matrix only using my own C code and only read it on R level. So, the above is not a big problem for me (at least not now). However, there is a related thing, which could be a bug. The following code determines the value of NAMED field in SEXP header of an object: SEXP getnamed(SEXP a) { SEXP out; PROTECT(out = allocVector(INTSXP, 1)); INTEGER(out)[0] = NAMED(a); UNPROTECT(1); return(out); } Now, consider the following session u <- matrix(as.integer(1),nrow=5,ncol=3) + as.integer(0) .Call("getnamed",u) # 1 (OK) length(u) .Call("getnamed",u) # 1 (OK) dim(u) .Call("getnamed",u) # 1 (OK) nrow(u) .Call("getnamed",u) # 2 (why?) u <- matrix(as.integer(1),nrow=5,ncol=3) + as.integer(0) .Call("getnamed",u) # 1 (OK) ncol(u) .Call("getnamed",u) # 2 (so, ncol does the same) Is this a bug? Petr Savicky. ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel