Unlist str_locate_all в отдельные начальный и конечный списки
Я использую str_locate_all, чтобы получить начальную и конечную позиции списка шаблонов в моей строке. Возвращает список с начальной и конечной позициями для каждого матча. Как я могу получить начальную и конечную позиции всех матчей в отдельных списках?
library(stringr)
patterns <- c("ABS", "BSDF", "ERIDF", "RTZOP")
string <- "ABSBSDFERIDFRTZOPABSBSDFRTZOPABSBSDFERIDFRTZOP"
matches <- str_locate_all(string, patterns)
Результат:
[[1]]
start end
[1,] 1 3
[2,] 18 20
[3,] 30 32
[[2]]
start end
[1,] 4 7
[2,] 21 24
[3,] 33 36
[[3]]
start end
[1,] 8 12
[2,] 37 41
[[4]]
start end
[1,] 13 17
[2,] 25 29
[3,] 42 46
Что бы я хотел:
start <- c(1, 18, 30, 4, 21, 33, 8, 37, 13, 25, 42)
end <- c(3, 20, 32, 7, 24, 36, 12, 41, 17, 29, 46)
1 ответ
Решение
Используйте do.call с rbind, чтобы сложить списки вместе, затем уберите нужные столбцы.
> library(stringr)
>
> patterns <- c("ABS", "BSDF", "ERIDF", "RTZOP")
> string <- "ABSBSDFERIDFRTZOPABSBSDFRTZOPABSBSDFERIDFRTZOP"
>
> matches <- str_locate_all(string, patterns)
>
> all <- do.call(rbind, matches)
> start <- all[, 1]
> stop <- all[, 2]
> start
[1] 1 18 30 4 21 33 8 37 13 25 42
> stop
[1] 3 20 32 7 24 36 12 41 17 29 46