R-devel, I am migrating from R.2.13.2 to R.2.15.1 and just realize that R command line options --max-nsize and --max-vsize are no longer supported along with the defunct of mem.limits(). To me, the function and options along with other two, --min-nsize and --min-vsize, are useful in allowing some explicit control of R memory usage. One benefit is that the setting of maximum boundary could prompt gc() to be triggered at specific point and prevent R from holding memory resources unnecessarily, or gc() could be postponed too much. This can also serve a way to manually balance the resources and performance between R and other processes that are running on the same system. Could anyone in R core team share the reason behind the decision of defuncting this memory upper bound feature ? Is this functionality covered in R-2.15.1 by other means ? In particular, without --max-vsize in R-2.15.1, how can I set maximum memory limits when running embedded R ? Thanks, Quin [[alternative HTML version deleted]]
Hi R-devel,
When using lapply upon data.frame, I notice lapply coerces data.frame to list
before calling internal lapply function.
R> lapply
function (X, FUN, ...)
{
FUN <- match.fun(FUN)
if (!is.vector(X) || is.object(X))
X <- as.list(X)
.Internal(lapply(X, FUN))
}
df <- data.frame(V1=seq(100*1024*1024), V2=rnorm(100*1024))
R> is.vector(df) # btw, list is a vector, data.frame is a list,
but data.frame is NOT a vector, something is not consistent ??
[1] FALSE
X <- as.list(X) is executed and takes time for large data.frame
R> object.size(df)
1258291976 bytes
R> system.time(as.list(df))
user system elapsed
1.396 0.472 1.885
The question is: Given that data.frame is a list, is it necessary to coerce the
data.frame to a list for lapply?
Would the following logic do the same but more efficient for lapply to run on
data.frame?
if (!is.vector(X) && !is.list(X) || is.object(X))
X <- as.list(X)
.Internal(lapply(X, FUN))
Thanks,
Qin
[[alternative HTML version deleted]]