#r #regex #substring #stringr
Вопрос:
Как вы используете вектор в регулярном выражении, чтобы вы могли извлечь все из вектора в другое слово?
Мне нужно извлечь несколько подстрок из серии больших строк во фрейме данных с помощью str_match. Каждая подстрока начинается с вида дерева и заканчивается словом «ссылки». Поскольку нужные мне подстроки могут начинаться с нескольких разных видов, я создал вектор под названием tree.sp, чтобы содержать все возможности.
test.df <- data.frame(
Heading_ChLk = c("West", 40.00, 80.00),
Bound_Desc = c("On the Base line along the south side of section 34 T 1 N, R 29 W of the 5th PM.",
"Set a 1/4 section corner post from which a pine 9 inches diameter bears N 43 E 35 links and a black oak 15 inches diameter bears S 10 E 30 links",
"Set a post corner to sections 33 amp; 34 from which a white oak 17 inches diameter bears N 32 W 57 links and a black oak 20 inches diameter bears N 46 E 19 links.")
)
tree.sp <- c("pine|black oak|white oak")
Ответ №1:
Вы можете использовать str_match
в качестве —
library(stringr)
test.df$result <- str_match(test.df$Bound_Desc, sprintf('((%s).*links)', tree.sp))[, 2]
test.df$result
#[1] NA
#[2] "pine 9 inches diameter bears N 43 E 35 links and a black oak 15 inches diameter bears S 10 E 30 links"
#[3] "white oak 17 inches diameter bears N 32 W 57 links and a black oak 20 inches diameter bears N 46 E 19 links"
Аналогичный код str_extract
также можно использовать с —
str_extract(test.df$Bound_Desc, sprintf('(%s).*links', tree.sp))