Ersetzen von Zeichen in der Spalte Namen gsub

Lese ich in einem Haufen von CSVs, die haben Sachen wie "Umsatz - Tausende" in den Titel und kommen in R als "sales...Tausende". Ich möchte einen regulären Ausdruck zu verwenden (oder andere einfache Methode) diese bereinigen.

Ich kann nicht herausfinden, warum dies 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 ich bin in Ordnung verlassen der Zeitraum zwischen den Wörtern, wenn das Auftritt.

Danke.

Ersatz erfolgt lokal innerhalb der Funktion, nicht Global. Wenn Sie return(x) auf der letzten Zeile der Funktion, erhalten Sie den aktualisierten Daten-frame.
Danke für die schnelle Antwort! Können Sie geben Sie die Funktion, wie muss es geschrieben werden? Ich versucht, indem Sie return(x) in den code und bin nicht immer die Ergebnisse, die ich erwarte. Kann ich es drucken Sie den Spaltennamen oder drucken Sie einen dataframe mit den neuen Spaltennamen, aber weder der Versuch, tatsächlich geändert hat die Daten im Rahmen der globalen Umwelt.
Sie müssen auch entweder verwenden Sie aktualisierte Daten-frame zu überschreiben der vorhandenen Daten-frame, oder weisen Sie auf neue variable. Die original-Daten-frame wird nicht verändert durch die Funktion selbst auch du hast return(x).
Definieren colClean <- function(x){ colnames(x) <- gsub("\\.\\.+", ".", colnames(x)); x } tun, und dann a <- colClean(a) zu aktualisieren a
d ' Oh, diesen letzten Schritt mit der Zuordnung! Eindeutig das Ergebnis einer langen Woche. Vielen Dank für die Hilfe.

InformationsquelleAutor yake84 | 2016-09-23

Schreibe einen Kommentar