title: Setting vertex attributes from a data frame in a large network
body: <p>I want to set vertex attributes in a large network (20k nodes). For simplicity here is a sample of the edgelist:</p>
  
  <pre><code>library(igraph)
  el &lt;- matrix( c(1, 2,1,3,1,4,2,3,2,5,3,6,3,7,3,8,3,9,12,13,13,14 ), nc = 2, byrow = TRUE)
  el[,1] = as.character(el[,1])
  el[,2] = as.character(el[,2])
  g = graph.data.frame(el,directed=FALSE)
  </code></pre>
  
  <p>Also, I have a data frame that looks like this:</p>
  
  <pre><code>ID = c(1,2,3,4,5,6,7,8,9,NA,NA)
  Attr1 = c(12,13,14,NA,14,13,16,NA,24,13,15) 
  Attr2 = c(NA, "bb", "cc","ff","dd",NA,"hh",NA,"kk","dd","cc") 
  Attributes = data.frame(ID, Attr1, Attr2)
  rm(Attr1)
  rm(Attr2)
  rm(ID)       
  </code></pre>
  
  <p>I want to use the data from the Attributes data frame as vertex attributes. As in the example, some of the data is missing (e.g. some vertices in the network are not represented in the Attributes data frame). The number of rows in the data frame matches the number of vertices.
  I want to add the attributes using the ID for matching  (the IDs in the edgelist and the Attributes dataframe are mostly the same, however some IDs are only in either the edgelist or the dataframe).</p>