Hervé Pagès
2012-Feb-08 00:08 UTC
[Rd] capture.output() is trying to allocate 17179869182.6 Gb on my not so big data.frame
Hi,
This is what I get with recent R devel on a 64-bit Ubuntu laptop:
> mydf <- data.frame(a=1:2080, b=1001:2040, c=letters, d=LETTERS,
e=1:1040)
> mydf_in_a_character_vector <- capture.output(mydf)
Error in print.default(m, ..., quote = quote, right = right) :
cannot allocate memory block of size 17179869182.6 Gb
I get something similar with R 2.14.1.
Cheers,
H.
> sessionInfo()
R Under development (unstable) (2012-01-16 r58124)
Platform: x86_64-unknown-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=C LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
--
Herv? Pag?s
Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M1-B514
P.O. Box 19024
Seattle, WA 98109-1024
E-mail: hpages at fhcrc.org
Phone: (206) 667-5791
Fax: (206) 667-1319
Martin Morgan
2012-Feb-08 03:31 UTC
[Rd] capture.output() is trying to allocate 17179869182.6 Gb on my not so big data.frame
On 02/07/2012 04:08 PM, Herv? Pag?s wrote:> Hi, > > This is what I get with recent R devel on a 64-bit Ubuntu laptop: > > > mydf <- data.frame(a=1:2080, b=1001:2040, c=letters, d=LETTERS, > e=1:1040) > > mydf_in_a_character_vector <- capture.output(mydf) > Error in print.default(m, ..., quote = quote, right = right) : > cannot allocate memory block of size 17179869182.6 GbThe error is thrown inside src/main/printarray.c:425 Rprintf("%*s%s", R_print.gap, "", EncodeString(x[i + j * r], w[j], quote, right)); where the array w is the result of an unPROTECTed allocation earlier in the function, and a garbage collection triggered in MatrixRowLabel (in this case; allocation also occurs in MatrixColLabel, Rprintf). PROTECTion seems to have been implemented in the file assuming that the only allocations are at the head of the function; the return in the _PRINT_DEAL_c_eq_0 macro makes it difficult to balance the protection stack, and R_alloc seems to be a better solution anyway. diff attached. Martin Morgan> > I get something similar with R 2.14.1. > > Cheers, > H. > > > sessionInfo() > R Under development (unstable) (2012-01-16 r58124) > Platform: x86_64-unknown-linux-gnu (64-bit) > > locale: > [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C > [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 > [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 > [7] LC_PAPER=C LC_NAME=C > [9] LC_ADDRESS=C LC_TELEPHONE=C > [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C > > attached base packages: > [1] stats graphics grDevices utils datasets methods base >-- Computational Biology Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109 Location: M1-B861 Telephone: 206 667-2793 -------------- next part -------------- A non-text attachment was scrubbed... Name: printarray.c.diff Type: text/x-patch Size: 3445 bytes Desc: not available URL: <https://stat.ethz.ch/pipermail/r-devel/attachments/20120207/aa4d0042/attachment.bin>