Существует эзотерическая функция с именем person
, предназначенная для хранения имен, функция преобразования as.person
, которая выполняет этот анализ для вас, и метод format
, чтобы впоследствии использовать его (с творческим использованием аргумента фигурных скобок).).Он даже работает со сложными фамилиями (например, van Nistelrooy), но результат одного имени неудовлетворителен.Это может быть исправлено с быстрым окончанием sub
, хотя.
x <- c("Barack Obama","Donald J. Trump","J. Edgar Hoover","Beyonce Knowles-Carter","Sting", "Ruud van Nistelrooy", "John von Neumann")
y <- as.person(x)
format(y, include=c("family","given"), braces=list(family=c("",",")))
[1] "Obama, Barack" "Trump, Donald J."
[3] "Hoover, J. Edgar" "Knowles-Carter, Beyonce"
[5] "Sting," "van Nistelrooy, Ruud"
[7] "von Neumann, John"
## fix for single names - curse you Sting!
sub(",$", "", format(y, include=c("family","given"), braces=list(family=c("",","))))
[1] "Obama, Barack" "Trump, Donald J."
[3] "Hoover, J. Edgar" "Knowles-Carter, Beyonce"
[5] "Sting" "van Nistelrooy, Ruud"
[7] "von Neumann, John"