Как преобразовать вектор строк в Заголовок

У меня есть вектор строк в нижнем регистре. Я'Я хотел бы изменить их на регистр заголовка, означая, что первая буква каждого слова будет заглавной. Я'нам удалось сделать это с двойной петлей, но яя надеюсь на этоболее эффективный и элегантный способ сделать это, возможно,gsub и регулярное выражение.

Вот's некоторые примеры данных, а также работающий двойной цикл, а также другие вещи, которые я пробовалт работа.

strings = c("first phrase", "another phrase to convert",
            "and here's another one", "last-one")

# For each string in the strings vector, find the position of each 
#  instance of a space followed by a letter
matches = gregexpr("\\b[a-z]+", strings) 

# For each string in the strings vector, convert the first letter 
#  of each word to upper case
for (i in 1:length(strings)) {

  # Extract the position of each regex match for the string in row i
  #  of the strings vector.
  match.positions = matches[[i]][1:length(matches[[i]])] 

  # Convert the letter in each match position to upper case
  for (j in 1:length(match.positions)) {

    substr(strings[i], match.positions[j], match.positions[j]) = 
      toupper(substr(strings[i], match.positions[j], match.positions[j]))
  }
}

Это сработало, но кажется чрезмерно сложным. Я прибег к этому только после неудачного эксперимента с более простыми подходами. Вот некоторые из вещей, которые я пробовал, а также вывод:

# Google search suggested \\U might work, but evidently not in R
gsub("(\\b[a-z]+)", "\\U\\1" ,strings)
[1] "Ufirst Uphrase"                "Uanother Uphrase Uto Uconvert"
[3] "Uand Uhere'Us Uanother Uone"   "Ulast-Uone"                   

# I tried this on a lark, but to no avail
gsub("(\\b[a-z]+)", toupper("\\1"), strings)
[1] "first phrase"              "another phrase to convert"
[3] "and here's another one"    "last-one"  

Регулярное выражение фиксирует правильные позиции в каждой строке, как показано вызовомgregexpr, но строка замены явно работает не так, как хотелось бы.

Если ты можешь'Я уже сказал,Я относительно новичок в регулярных выражениях и был бы признателен за помощь в том, как заставить замену работать правильно. Я'Я также хотел бы узнать, как структурировать регулярное выражение, чтобы избежать захвата буквы после апострофа, так как я неЯ не хочу менять регистр этих букв.

Ответы на вопрос(4)

Ваш ответ на вопрос