Похоже, вы пытаетесь работать с функцией .simpleCap
, описанной в документации для ?tolower
:
.simpleCap <- function(x) {
s <- strsplit(x, " ")[[1]]
paste(toupper(substring(s, 1, 1)), substring(s, 2),
sep = "", collapse = " ")
}
, которую можно использовать для преобразования в верхний регистр первой буквы каждогослово в одной строке. Вы добавили for
цикл и tolower
в оставшуюся часть слова. Лучшим вариантом может быть сохранение tolower
, но удаление цикла for
и использование вместо него sapply
:
CapStr <- function(y) {
c <- strsplit(y, " ")[[1]]
paste(toupper(substring(c, 1, 1)), tolower(substring(c, 2)), sep = "")
}
> sapply(First.Name,CapStr,USE.NAMES = F)
[1] "John" "Mary" "Tommy" "Di" "Leonardo"
Другой вариант - использование stringr::str_to_title
:
library(stringr)
> str_to_title(First.Name)
[1] "John" "Mary" "Tommy" "Di" "Leonardo"