Hapus daftar str_location_all ke dalam daftar awal dan akhir yang terpisah

Saya menggunakan str_location_all untuk mendapatkan posisi awal dan akhir dari daftar pola dalam string saya. Ini mengembalikan daftar dengan posisi awal dan akhir untuk setiap pertandingan. Bagaimana saya bisa memasukkan posisi awal dan akhir semua pertandingan ke dalam daftar terpisah?

library(stringr)

patterns <- c("ABS", "BSDF", "ERIDF", "RTZOP")
string <- "ABSBSDFERIDFRTZOPABSBSDFRTZOPABSBSDFERIDFRTZOP"

matches <- str_locate_all(string, patterns)

Hasil:

[[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

Apa yang saya inginkan:

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)

person Nivel    schedule 08.01.2019    source sumber


Jawaban (1)


Gunakan do.call dengan rbind untuk menyusun daftar, lalu keluarkan kolom yang diinginkan.

> 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
person Joseph Clark McIntyre    schedule 08.01.2019
comment
Bekerja dengan sempurna! Terima kasih banyak! - person Nivel; 08.01.2019