Has there been any update on R's handling large integers greater than 10^9 (between 10^9 and 4x10^9) ? as.integer() in R 2.9.2 lists this as a restriction but doesnt list the actual limit or cause, nor if anyone was looking at fixing it. Glenn D Blanford, PhD <mailto:glenn.blanford@us.army.mil> Scientific Research Corporation gblanford@scires.com<mailto:gblanford@scires.com> [[alternative HTML version deleted]]
On 26/01/2010 3:25 PM, Blanford, Glenn wrote:> Has there been any update on R's handling large integers greater than 10^9 (between 10^9 and 4x10^9) ? > > as.integer() in R 2.9.2 lists this as a restriction but doesnt list the actual limit or cause, nor if anyone was looking at fixing it.Integers in R are 4 byte signed integers, so the upper limit is 2^31-1. That's not likely to change soon. The double type in R can hold exact integer values up to around 2^52. So for example calculations like this work fine: > x <- 2^50 > y <- x + 1 > y-x [1] 1 Just don't ask R to put those values into a 4 byte integer, they won't fit: > as.integer(c(x,y)) [1] NA NA Warning message: NAs introduced by coercion Duncan Murdoch> > Glenn D Blanford, PhD > <mailto:glenn.blanford at us.army.mil> > Scientific Research Corporation > gblanford at scires.com<mailto:gblanford at scires.com> > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.
Hi! That is somewhat strange. §R>2^100 [1] 1.267651e+30 §R> x <- 2^50 §R> y <- x + 1 §R> y-x [1] 1 §R>x [1] 1.1259e+15 §R>x+1 [1] 1.1259e+15 len From: Duncan Murdoch [murdoch@stats.uwo.ca] Sent: Tuesday, January 26, 2010 4:09 PM To: Blanford, Glenn Cc: r-help@R-project.org Subject: Re: [R] large integers in R On 26/01/2010 3:25 PM, Blanford, Glenn wrote:> Has there been any update on R's handling large integers greater than 10^9(between 10^9 and 4x10^9) ?> > as.integer() in R 2.9.2 lists this as a restriction but doesnt list theactual limit or cause, nor if anyone was looking at fixing it. Integers in R are 4 byte signed integers, so the upper limit is 2^31-1. That's not likely to change soon. The double type in R can hold exact integer values up to around 2^52. So for example calculations like this work fine: > x <- 2^50 > y <- x + 1 > y-x [1] 1 Just don't ask R to put those values into a 4 byte integer, they won't fit: > as.integer(c(x,y)) [1] NA NA Warning message: NAs introduced by coercion Duncan Murdoch [[alternative HTML version deleted]]