Replace characters in column names gsub : <p>I am reading in a bunch of CSVs that have stuff like "sales - thousands" in the title and come into R as "sales...thousands". I'd like to use a regular expression (or other simple method) to clean these up. </p>

<p>I can't figure out why this doesn't work:</p>

<pre><code>#mock data
  a &lt;- data.frame(this.is.fine = letters[1:5],
                  this...one...isnt = LETTERS[1:5])

#column names
  colnames(a)
  # [1] "this.is.fine"  "this...one...isnt"

#function to remove multiple spaces
  colClean &lt;- function(x){
    colnames(x) &lt;- gsub("\\.\\.+", ".", colnames(x))
  }

#run function
  colClean(a)

#names go unaffected
  colnames(a)
  # [1] "this.is.fine"  "this...one...isnt"
</code></pre>

<p>but this code does:</p>

<pre><code>#direct change to names
  colnames(a) &lt;- gsub("\\.\\.+", ".", colnames(a))

#new names
  colnames(a)
  # [1] "this.is.fine"  "this.one.isnt"
</code></pre>

<p>Note that I'm fine leaving one period between words when that occurs.</p>

<p>Thank you.</p>
