How I swap rownames in these data? I have a microarray gene expression matrix like this by weird gene IDs in rows. 

&gt; head(mat[1:10,1:5])

&gt; dim(mat)
[1] 39302    76
&gt;


There is matched gene symbol for each of these identifiers in another matrix 

&gt; 

&gt; dim(matched)
[1] 23107     1
&gt;


How I can have matched gene symbol with probe identifiers in the row names of my expression matrix please? The problem is, for one gene symbol we may 
I tried 

&gt; merged &lt;- merge(mat, matched) 
Error: cannot allocate vector of size 6.8 Gb



  EDITED


tmp = paste(matched[rownames(mat)],rownames(mat),sep="_")
&gt; rownames(mat) = tmp


EDITED  

This is my matrix after matching prob identifiers to gene symbol

&gt; head(array[,1:10,1:5])
               GSM482796 GSM482797 GSM482798 GSM482799
1         OR2T6    0.0171   -0.1100   -0.0394   -0.0141
2          EBF1    0.1890    0.0222    0.0832    0.0459
3 DKFZp686D0972    1.9400    0.2530    0.3770    0.8310
4        ATP8B4   -0.1490    0.0690   -0.0637   -0.0527
5      NOTCH2NL    0.1540   -0.3880    0.2160   -0.0812
6        SPIRE1    0.2920    0.1690    0.5500    0.1430


but now for some genes I have several probes. For example for gene A I have several matched probes. So I have repetition for gene A. How I can take mean over the expression of repeated genes please and having an unique value?
There are actually two questions.

The first one is about the memory issue. I believe merge from data.table would solve that issue.

The second one would be aggregating or summarizing the identifiers. As @StupidWolf mentioned, you need to have a rule, summing them up, averaging them, ... For this second part one way is using dplyr:

merged_data %&gt;%
  group_by(probe_colum) %&gt;%
  summarise_all(mean or sum or ...) %&gt;%
  mutate(new_column = paste(probe_column, gene_column, sep = "_"))


The same thing can be done faster with data.table:

merged_data[, lapply(.SD, mean or sum or ..., na.rm=TRUE), by = probe_column ] [, new_column := paste(probe_column, gene_column, sep = "_"),]  


.SD means subset of data and your subsets are your groups based on your probes.