Zeichen in Spaltennamen ersetzen gsub

Ich lese in einer Reihe von CSVs, die Dinge wie "Umsatz - Tausende" im Titel haben und in R als "Umsatz ... Tausende" vorkommen. Ich möchte einen regulären Ausdruck (oder eine andere einfache Methode) verwenden, um diese zu bereinigen.

Ich kann nicht herausfinden, warum das nicht funktioniert:

#mock data
  a <- 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 <- function(x){
    colnames(x) <- gsub("\\.\\.+", ".", colnames(x))
  }

#run function
  colClean(a)

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

aber dieser Code macht:

#direct change to names
  colnames(a) <- gsub("\\.\\.+", ".", colnames(a))

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

Beachten Sie, dass es mir gut geht, wenn zwischen den Wörtern ein Zeitraum liegt.

Vielen Dank

Antworten auf die Frage(4)

Ihre Antwort auf die Frage