Die Anfangsbuchstaben der beiden Worte in einem zwei-Wort-string
Sagen, dass ich eine zwei-Wort-Zeichenfolge und ich profitieren wollen
beide von Ihnen.
name <- c("zip code", "state", "final count")
Den Hmisc
Paket hat eine Funktion capitalize
die groß geschrieben das erste Wort, aber ich bin mir nicht sicher
wie man das zweite Wort großgeschrieben ist. Die Hilfe-Seite für capitalize
nicht empfehlen, es kann diese Aufgabe durchzuführen.
library(Hmisc)
capitalize(name)
# [1] "Zip code" "State" "Final count"
Ich will:
c("Zip Code", "State", "Final Count")
Was über drei-Wort-strings:
name2 <- c("I like pizza")
InformationsquelleAutor ATMathew | 2011-06-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Basis der R-Funktion groß-und Kleinschreibung ist
toupper(x)
. Aus der Hilfe-Datei für?toupper
es gibt diese Funktion das tut, was Sie brauchen:Bearbeiten Dies funktioniert für eine beliebige Zeichenfolge, unabhängig von der word count:
Wie über die Namen getrennt? Wie Smith-Jones oder Al-Viskose, die eingetragen werden könnten, als SMITH-JONES oder al-rayon.
Sie können
paste0()
stattpaste(..., sep="")
. Einfach kürzer.Richtig, aber in diesem Fall nicht, da
paste0 ()
nicht akzeptiertcollapse = ...
argumentist das trotzdem korrekt?
paste0(c("a", "b"), collapse = ",")
funktioniert gut für mich. Vielleicht ist dies eine der letzten Funktion?InformationsquelleAutor Andrie
Gibt es eine build-in base-R-Lösung für Titel Fall:
oder
c("all", "above", "after", "along", "also", "among", "any", "both", "can", "few", "it", "less", "log", "many", "may", "more", "over", "some", "their", "then", "this", "under", "until", "using", "von", "when", "where", "which", "will", "without", "yet", "you", "your")
)Sie werden überrascht sein, wenn Sie erwarten, dass NUR das erste Zeichen groß geschrieben werden.
tools::toTitleCase("HELLO")
Ergebnisse inHELLO
. Möchten Sie möglicherweise wickeln Sie es umtolower
ersten, etwa so:tools::toTitleCase(tolower("HELLO"))
gibtHello
gute ppint - immer noch seine Titel-Fall-ishst Sie kann bekommen so weit
Sollte dies der akzeptierte Lösung
Danke! Diese Lösung funktioniert gut für die meisten Fällen, außer, wenn es Abkürzungen von U. S Staaten
InformationsquelleAutor petermeissner
Übereinstimmung mit einem regulären Ausdruck, wird am Anfang
^
oder nach einem Leerzeichen[[:space:]]
und ist gefolgt von einem alphabetischen Zeichen[[:alpha:]]
. Weltweit (das " g " in gsub) ersetzen alle solche Vorkommnisse, die mit der matched Anfang oder Raum-und die upper-case-version des matched-alphabetische Zeichen,\\1\\U\\2
. Dies hat zu tun mit den perl-Stil reguläre Ausdrücke.In ein wenig mehr detail für den Ersatz argument
gsub()
,\\1
sagt 'den Teil derx
matching des ersten sub-Ausdruckes', d.h. der Teil desx
passenden(^|[[:spacde:]])
. Ebenso\\2
sagt den Teil derx
passenden zweiten sub-Ausdruck([[:alpha:]])
. Die\\U
syntax aktiviert, mitperl=TRUE
, und Mittel, um das nächste Zeichen in Großbuchstaben. Also für "Zip-code",\\1
ist "Zip",\\2
ist "code",\\U\\2
ist "Code", und\\1\\U\\2
ist "Zip Code".Den
?regexp
Seite ist hilfreich für ein Verständnis der regulären Ausdrücke?gsub
für Dinge zusammen.\\u
und gab vor der Realisierung sollte ich aktivierte es...etwas ironisch. Hier ist, was ich kam mit, nicht gründlich geprüft sind, gegen eine ungerade-ball-Fällengsub(pattern = "\\b([a-z])", replacement = "\\U\\1", name, perl = TRUE)
Ich habe versucht, dies auf Zeile Namen und es funktionierte sofort, aber ich konnte das nicht wiederholen.
Funktioniert auf
tolower(name)
wenn es andere KappenInformationsquelleAutor Martin Morgan
Verwenden Sie diese Funktion aus
stringi
Paketstri_tans_totitle
in eine Funktion mit dem Namenstr_to_title()
. Es ist nur die stringi::stri_trans_totitle() unter der Decke, aber sparen kann beim laden einer anderen Bibliothek (das können Sie im wesentlichen bereits geladen haben), je nach Ihren workflow.InformationsquelleAutor bartektartanus
Alternative:
InformationsquelleAutor Brijesh
Versuchen:
Hmisc
aufheben könnenplyr
'ssummarize
Funktion, wie Sie hier erwähnt: stackoverflow.com/a/35324305/288875Oder die andere Weise herum.
Hmisc
ist ein bisschen älter alsplyr
...InformationsquelleAutor diliop
Aus der Hilfe-Seite für
?toupper
:InformationsquelleAutor Chase
Paket
BBmisc
enthält jetzt die FunktioncapitalizeStrings
.InformationsquelleAutor Dirk
Alternative Weise mit substring und regexpr:
InformationsquelleAutor greg L
Konnte man auch mit dem snakecase Paket:
https://github.com/Tazinho/snakecase
InformationsquelleAutor Taz