title: Selectively Rename R Data Frame Column Names Using a Key, Value Pair Dictionary
body: <p>I know there's an easy way to do this but I can't remember how I did it and can't find my notes. Basically I have a data frame with a bunch of column names. I also have a key,value pair data frame that has some new column names that need to replace the existing ones. I want to rename all of the columns that have a pair (and none that don't). So for example we can use mtcars:</p>
  
  <pre><code>x&lt;-mtcars
  idkey &lt;- data.frame("original" =  c("cyl","hp"), "new" = c("cylinder", "horsepower"))
  </code></pre>
  
  <pre><code>&gt; head(x)
                     mpg cyl disp  hp drat    wt  qsec vs am gear carb
  Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
  Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
  Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
  Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
  Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
  Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
  
  &gt; idkey
    original        new
  1      cyl   cylinder
  2       hp horsepower
  </code></pre>
  
  <p>I just want to replace the column names in x that exist in idkey. So after the replacement names(x) will go from this </p>
  
  <pre><code>&gt; names(x)
   [1] "mpg"  "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear" "carb"
  </code></pre>
  
  <p>to this:</p>
  
  <pre><code>&gt; names(x)
   [1] "mpg"  "cylinder"  "disp" "horsepower"   "drat" "wt"   "qsec" "vs"   "am"   "gear" "carb"
  </code></pre>
  
  <p>Note I would need this to <strong>only</strong> rename the columns which exist in the key, so some columns may not get renamed and they wouldn't  be in any particular order.</p>