It's not just the total memory that matters according to the following from the R manual:
Memory Limits in R
Description:
R holds objects it is using in memory. This help file documents
the current design limitations on large objects: these differ
between 32-bit and 64-bit builds of R.
Details:
R holds all objects in memory, and there are limits based on the
amount of memory that can be used by all objects:
* There may be limits on the size of the heap and the number
of cons cells allowed - see 'Memory' - but these are usually
not imposed.
* There is a limit on the address space of a single process
such as the R executable. This is system-specific, but
32-bit OSes imposes a limit of no more than 4Gb: it is often
3Gb or less.
* The environment may impose limitations on the resources
available to a single process - see the OS/shell's help on
commands such as 'limit' or 'ulimit'.
Error messages beginning 'cannot allocate vector of size' indicate
a failure to obtain memory, either because the size exceeded the
address-space limit for a process or, more likely, because the
system was unable to provide the memory. Note that on a 32-bit OS
there may well be enough free memory available, but not a large
enough contiguous block of address space into which to map it.
There are also limits on individual objects. On all versions of
R, the maximum length (number of elements) of a vector is 2^31 - 1
~ 2*10^9, as lengths are stored as signed integers. In addition,
the storage space cannot exceed the address limit, and if you try
to exceed that limit, the error message begins 'cannot allocate
vector of length'. The number of characters in a character string
is in theory only limited by the address space.