Sometimes you may run into this R Error: vector memory exhausted (limit reached?). It may be able to guess it is related to the memory of your system. But how can you fix that? Let’s find out.
R Error: vector memory exhausted (limit reached?)
Why The Error Occurs
Like MemoryError in Python, you see this error message above in R because of the most obvious reason: your interpreter can’t find any more memory space from your system to run its commands.
It might come as a surprise for many, but R is actually not a memory-efficient program. Most of the time, this weakness doesn’t cause any trouble, like bringing down your computer.
By default, R holds all of its data in memory for fast access. This approach brings greater flexibility and performance to R. But on the other hand, it places extra constraints on your system’s memory consumption.
The amount of RAM it needs increases rapidly when you import a huge dataset or allow multiple people to connect to it. When this consumption goes beyond the capacity of your system, you will see the error above.
There are many things that can make R runs into this limitation even quicker:
- Your system has a small amount of RAM.
- Your R installation is allowed to use too little RAM.
- Your R script isn’t optimized, causing memory leaks.
Depending on which is more likely to be the cause, you can try different solutions while investigating the issue.
Get More RAM
R isn’t a video editor or a video game. It typically has a small footprint and doesn’t require a specific large amount of RAM. But if you plan to do heavy-duty data analysis with it, try to get as much RAM as you can.
If your laptop or desktop has free RAM slots, find sticks that match your existing RAM and put them in. Ask for help from a friend or your IT department if you aren’t familiar with this task. It is cheap to get 16GB or even 32GB RAM nowadays, and this investment can solve a lot of problems.
Raise The RAM Limits
Some systems like Windows have limitations on how much R can use. You can adjust with either the memory.limit() function, or the –max-mem-size command line flag.
Enter this into your R interpreter, in which <value> indicates the new RAM limitation in Mb:
> memory.limit(size = <value>)
Or run R with this parameter:
$ R --max-mem-size=<value>M
These two examples should impose the same new limits (8GB) on your R program:
> memory.limit(size = 8192) $ R --max-mem-size=8192M
Optimize Your Code
R’s developers have put many mechanisms in place to safeguard the memory usage of this programming language. For instance, it uses garbage collection (GC) for automatic memory management. Whenever an object is no longer pointed to by any name, it gets deleted by R to save memory.
This should take care of your script in an automatic manner. However, memory leaks can happen when you keep referencing an object even though it isn’t needed anymore. That object is kept by R in the memory and doesn’t get freed.
Two common sources of memory leaks are closures and formulas. Be extra cautious about using objects with them.
The R Error: vector memory exhausted (limit reached?) occurs when your R integer has run out of memory, and the system can’t allocate more for it. Many solutions exist, which either increase the number of memory available to R or decrease the memory usage of your script.