Ich habe ein Atom Vektor wie:Ändern Spaltennamen in Datenrahmen mit gsub
col_names_to_be_changed <- c("PRODUCTIONDATE", "SPEEDRPM", "PERCENTLOADATCURRENTSPEED", sprintf("SENSOR%02d", 1:18))
ich _
zwischen den Wörtern haben möchten, haben sie alle Kleinbuchstaben, mit Ausnahme ersten Buchstaben der Wörter (nach R Style for dataframes from advanced R). Ich möchte so etwas haben:
new_col_names <- c("Production_Date", "Percent_Load_At_Current_Speed", sprintf("Sensor_%02d", 1:18))
wird angenommen, dass meine Worte auf diese Liste beschränkt sind:
list_of_words <- c('production', 'speed', 'percent', 'load', 'at', 'current', 'sensor')
ich eines Algorithmus denke, dass gsub
verwendet, setzt _
wo immer es findet Wort aus der obigen Liste und dann Großbuchstaben den ersten Buchstaben jedes Wortes. Obwohl ich das manuell machen kann, würde ich gerne lernen, wie dies mit gsub
schöner gemacht werden kann. Vielen Dank.
Sie wollen wahrscheinlich nicht 'gsub'. Da Sie eine Wörterbuchliste haben, ist es wahrscheinlich besser, eine Extraktionsfunktion wie 'regmatches' zu verwenden. Aber ich habe das Gefühl, dass Paket * stringi * (oder sein Wrapper * stringr *) am besten dafür wegen seiner Vektorisierung über alle Argumente funktioniert. –
sollten Sie mehr Aufwand zeigen 'gsub ('(? <=^| _) ([Az])', '\\ U \\ 1', gsub (sprintf ('(? I) (? <=% S) (? =. {2,}) ', einfügen (list_of_words, collapse =' | ')),' _ ', tolower (col_names_to_be_changed), perl = TRUE), perl = TRUE) ' – rawr
@rawr das hat perfekt funktioniert. Können Sie das zu einer Lösung machen, damit andere es in Zukunft nutzen können? Der erste 'gsub' erledigt die Aufgabe' gsub (sprintf ('(? I) (? <=% S) (? =. {2,})'), einfügen (list_of_words, collapse = '|')), '_', tolower (col_names_to_be_changed), perl = TRUE) 'und dann der andere' gsub' kapitalisiert die ersten Buchstaben. Vielen Dank. – ahoosh