Просто напишите вспомогательную функцию, чтобы сделать это для вас - хотя я думаю, это зависит от того, насколько высокими будут цифры.Если это только от 1 до 10, то это просто.
Нет сомнений, что есть более элегантный способ сделать это, но это наверняка решит вашу основную проблему.
address_string_replace <- function(x) {
require(tidyverse)
address_tbl <- tibble(number = 1:10,
text = c('first','second','third','fourth','fifth','sixth','seventh','eighth','ninth','tenth'))
address_test <- 1:nrow(address_tbl)
tested_value <- tibble()
for (i in address_test) {
new_test <- tibble(test = ifelse(str_detect(x,address_tbl$text[i])==TRUE,address_test[i],0))
tested_value <- bind_rows(tested_value,new_test)
}
tested_value <- tested_value %>%
filter(!test == 0)
value <- tested_value[['test']]
address_fix <- address_tbl %>%
filter(number == value)
new_x <- gsub(address_fix$text,address_fix$number,x)
return(new_x)
}
Тогда вы можете протестироватьэто:
x1 <- 'first bank street'
address_string_replace(x1) #returns '1 bank street'
x2 <- 'second port avenue'
address_string_replace(x2) #returns '2 port avenue'