Если вы хотите использовать для этого quanteda , вы можете преобразовать его в корпус, а затем обработать его двумя вызовами corpus_segment()
, один для получения текста раньше, а второй - затем. просто выделите текст после. Затем вы можете повторно сгруппировать текст, используя texts(x, groups = docid())
, указав spacer = ", "
.
Вот как с желаемым результатом:
library("quanteda")
## Package version: 2.1.1
df <- data.frame(
id = c(1, 2),
text = c("something here <h1>my text</h1> also <h1>Keep it</h1>", "<h1>title</h1> another here")
)
charvec <- corpus(df, docid_field = "id") %>%
corpus_segment("</h1>", pattern_position = "after") %>%
corpus_segment("<h1>", pattern_position = "before") %>%
texts(groups = docid(.), spacer = ", ")
Затем, чтобы преобразовать это в data.frame
что хотите:
data.frame(text = charvec, id = names(charvec))
## text id
## 1 my text, Keep it 1
## 2 title 2