Вот, пожалуйста, решение от тидиверса (и больше не используется stringi
):
Предположим, ваш фрейм данных называется df
.
Решение
library(dplyr)
df %>%
mutate(text= strsplit(text, "(?<=[[:punct:]])\\s(?=[A-Z])", perl=T))
Объяснение: strsplit
в вызове mutate возвращает список, поэтому у вашего фрейма данных теперь есть истинный список-столбец. (Регулярное выражение с разделением строк найдено здесь )
Что если я хочу разбить столбец списка на несколько строк?
Чтобы разделить элементы этого списка на их собственные строки, у вас есть два варианта:
просто позвоните tidyr::unnest
в столбце списка:
df %>% tidyr::unnest(text)
Используйте tidyr::separate_rows
на исходном кадре данных (до создания столбца списка):
df %>% tidyr::separate_rows(text, sep= "(?<=[[:punct:]])\\s(?=[A-Z])")