From dwinsemius at comcast.net  Sat Feb 12 03:24:43 2011
From: dwinsemius at comcast.net (David Winsemius)
Date: Fri, 11 Feb 2011 21:24:43 -0500
Subject: [Rd] R limits documented?
In-Reply-To: <6EAEBC2E-42FD-4D2B-BDAE-94CEC63E9FE9@r-project.org>
References: <AANLkTinoie27eMBdq7=QBBcrhBLorhFoiBX6sW+6vBzm@mail.gmail.com>
	<7C9BDD66-4BF5-4A49-A3E1-B96274457DA4@comcast.net>
	<433F8810-FE8D-4AD0-A012-45C056A505FA@r-project.org>
	<6EAEBC2E-42FD-4D2B-BDAE-94CEC63E9FE9@r-project.org>
Message-ID: <E85328A3-DCDD-4BF5-B1E8-749B68FB5F3A@comcast.net>


On Feb 11, 2011, at 8:46 PM, Simon Urbanek wrote:

>
> On Feb 11, 2011, at 8:45 PM, Simon Urbanek wrote:
>
>>
>> On Feb 11, 2011, at 7:55 PM, David Winsemius wrote:
>>
>>>
>>> On Feb 11, 2011, at 7:09 PM, Dominick Samperi wrote:
>>>
>>>> Is there documentation on R limits?
>>>> That is, max matrix size, etc.?
>>>>
>>>> Diagnostics when limits are exceeded are not always
>>>> meaningful. For example:
>>>>> x <- rep(0,50000*50000)
>>>> Error in rep(0, 50000 * 50000) : invalid 'times' argument
>>>> In addition: Warning message:
>>>> In as.vector(data) : NAs introduced by coercion
>>>
>>>> x <- rep(0,40000*50000)
>>>> gc()
>>>           used    (Mb) gc trigger    (Mb)   max used    (Mb)
>>> Ncells    4673306   249.6    6945861   371.0    5315868   283.9
>>> Vcells 2165579376 16522.1 4374103452 33371.8 4165580443 31780.9
>>>> object.size(x)
>>> 16000000040 bytes
>>>
>>> So that is about 2/3 of my installed memory. This seems to be a  
>>> limitation due to the maximum positive integer being ~ 2*10^9
>>>> 2*10^9 < 50000*50000
>>> [1] TRUE
>>>> 2*10^9 < 40000*50000
>>> [1] FALSE
>>>
>>
>> The actual limit is for obvious reasons 2^31-1
>>
>>> as.integer(2^31-1)
>> [1] 2147483647
>>> as.integer(2^31)
>> [1] NA
>> Warning message:
>> NAs introduced by coercion
>>
>> (ok, for those that this is not obvious: the integer type ("int" in  
>> C) is 32-bit wide and it is a signed type so the range is  
>> -2^31-1 .. 2^31-1 -- the minus one on each side is the  
>> representation of NA and 0 respectively).
>>
>
> correction: the range should have read -(2^31-1) .. 2^31

I was using the number given in the help page documentation for  
"integer". (Part of the question was whether it was "documented".) I  
did understand that it was d/t the 4 byte range.

Regarding the second part of the OP's question.... this is from the  
"character" help page:
"as.character truncates components of language objects to 500  
characters (was about 70 before 1.3.1)."

And there was a posting from Prof Ripley regarding some other  
limitations that had been recently modified:
https://stat.ethz.ch/pipermail/r-devel/2010-November/058989.html

-- 
David.

>
>> Cheers,
>> Simon
>>
>>>>
>>>> Here's another example:
>>>>> library(orthopolynom)
>>>>> hermite <- hermite.h.polynomials(1001)
>>>>> hermite[[1001]] # should display 1000-th degree polynomial
>>>> Error in if (signs[1] == "- ") "-" else "" :
>>>> missing value where TRUE/FALSE needed
>>>
>>> Sounds as though the maximum length of an element of type  
>>> character has been exceeded.
>>>>
>>>> Thanks,
>>>> Dominick
>

David Winsemius, MD
West Hartford, CT



[Rd] R limits documented?
David Winsemius