Если все, что вы хотели сделать - это набрать первую букву в каждом слове заглавными буквами, мы можем использовать sub
:
x$new <- sub('^([a-z])', '\\U\\1', x$Strings, perl = TRUE)
Вывод:
Strings new
1 one One
2 two Two
3 three Three
4 four Four
5 five Five
6 four Four
7 five Five
8 four Four
9 five Five
10 two Two
11 thre Thre
12 two Two
13 three Three
14 two Two
15 three Three
Если уже есть список старых и новых слов для замены, мы можем использовать str_replace_all
, который имеет (своего рода) стиль, аналогичный описанному в примере с Python: OP:
library(stringr)
pattern <- c("one", "two", "thre", "three")
replacements <- c("One", "Two", "Three", "Three")
named_vec <- setNames(replacements, paste0("\\b", pattern, "\\b"))
x$new <- str_replace_all(x$Strings, named_vec)
или с match
или hashmap
:
library(dplyr)
x$new <- coalesce(replacements[match(x$Strings, pattern)], x$new)
library(hashmap)
hash_lookup = hashmap(pattern, replacements)
x$new <- coalesce(hash_lookup[[x$Strings]], x$new)
Вывод:
Strings new
1 one One
2 two Two
3 three Three
4 four four
5 five five
6 four four
7 five five
8 four four
9 five five
10 two Two
11 thre Three
12 two Two
13 three Three
14 two Two
15 three Three