Я хотел бы использовать purrr
для итеративного запуска нескольких замен строк в столбце данных с помощью функции gsub()
.
Это пример кадра данных:
df <- data.frame(Year = "2019",
Text = c(rep("a aa", 5),
rep("a bb", 3),
rep("a cc", 2)))
> df
Year Text
1 2019 a aa
2 2019 a aa
3 2019 a aa
4 2019 a aa
5 2019 a aa
6 2019 a bb
7 2019 a bb
8 2019 a bb
9 2019 a cc
10 2019 a cc
Это так я обычно запускаю замену строк и желаемый результат.
df$Text <- gsub("aa", "One", df$Text, fixed = T)
df$Text <- gsub("bb", "Two", df$Text, fixed = T)
df$Text <- gsub("cc", "Three", df$Text, fixed = T)
> df
Year Text
1 2019 a One
2 2019 a One
3 2019 a One
4 2019 a One
5 2019 a One
6 2019 a Two
7 2019 a Two
8 2019 a Two
9 2019 a Three
10 2019 a Three
Однако это нереально c использовать по мере увеличения списка замен строк, поэтому я попытался использовать purrr
для повторения таких изменений, используя список patterns
и replacements
, но Мне удалось создать только сообщения об ошибках. Я ожидаю, что код будет перебирать text_pattern
и text_replacement
и запускать gsub
на df$Text
для каждой пары шаблон / замена. Пример ниже вместе с сообщениями об ошибках.
text_pattern <- c("aa", "bb", "cc")
text_replacement <- c("One", "Two", "Three")
walk2(text_pattern, text_replacement, function(...){
gsub(text_pattern, text_replacement, df$Text, fixed = F)
}
)
Warning messages:
1: In gsub(text_former, text_replace, df$Text, fixed = F) :
argument 'pattern' has length > 1 and only the first element will be used
2: In gsub(text_former, text_replace, df$Text, fixed = F) :
argument 'replacement' has length > 1 and only the first element will be used
3: In gsub(text_former, text_replace, df$Text, fixed = F) :
argument 'pattern' has length > 1 and only the first element will be used
4: In gsub(text_former, text_replace, df$Text, fixed = F) :
argument 'replacement' has length > 1 and only the first element will be used
5: In gsub(text_former, text_replace, df$Text, fixed = F) :
argument 'pattern' has length > 1 and only the first element will be used
6: In gsub(text_former, text_replace, df$Text, fixed = F) :
argument 'replacement' has length > 1 and only the first element will be used
Возможно ли выполнить sh, используя функции из purrr
? Или я пытаюсь использовать не тот инструмент, и мне нужно использовать другую функцию?