I know it has been discussed before, but is there anywhere a good summary of (1) why R has the 2^31-1 vector length limit on all platforms (specifically 64-bit, of course) and (b) what would be the effort/implications of changing it? I think I have seen it but I couldn't find it and it does not seem to be in the FAQ.

It is *really* annoying me now :( My code is littered with 'if (prod(dim(...)) < 2^31) {do.something.reasonable()} else {custom.workaround.for.this.package.and.this.problem.at.this.time.and.please.just.shoot.me.now()}'.

The trouble seems to be that (a) many routines rely on converting data.frame (or similar) objects to matrix objects and (b) matrix objects are stored as a vector. Possible fixes would naively seem to be (a) change the storage of matrix objects which sounds like a major PITA or (b) change the index of a vector to a long int or similar which might be a problem for interoperability (e.g. save()) and possibly for underlying libraries but seems more manageable even if it has to be a fork (Q-project, anyone, or should we get a decent name this time?) and even if there are probably internal horrors around that make it harder than I think it would be.

I am tired of writing C code for the *only* reason that R has this stupid (you wouldn't implement it like that if you had to start again, would you?) limitation.

Allan.

______________________________________________
R-help@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.

Reply via email to