title: Fast data.table column split to multiple rows based on delimiter
body: <p>I have a data.table with 3 columns that I want to split the 3rd by a delimiter to multiple rows.</p>
  
  <p>My current implementation is:</p>
  
  <pre><code>protein.ids &lt;- c("PA0001","PA0001", "PA0002", "PA0002", "PA0002")
  protein.names &lt;- c("protein A", "protein A", "protein B", "protein B", "protein B")
  peptides.ids &lt;- c("1;3;2", "81;23;72", "7;6;8", "10;35;21", "5;2;7")
  
  data &lt;- data.frame(matrix(c(protein.ids, protein.names, peptides.ids), 
                            nrow = 5), 
                    stringsAsFactors = FALSE)
  
  colnames(data) &lt;- c("Protein IDs", "Protein Names", "Peptide IDs")
  
  data &lt;- data.table(data)
  
  data[ ,list(`Peptide IDs` = unlist(strsplit(`Peptide IDs`, ";"))),
         by = list(`Protein IDs`, `Protein Names`)]
  </code></pre>
  
  <p>However my data.table is quite big (~1.2G) and till now it gets ~3 seconds to run, so is there a faster approach to achieve the same results or there isn't any juice worth to squeeze?</p>