Я очищаю некоторые строки в R и мне нужно разделить их, чтобы восстановить информацию из двух подстрок, которые не принадлежат друг другу.Проблема в том, что у меня нет реального шаблона для разделения всех строк.Скорее, я знаю, что представляют собой разные подстроки, и я хочу использовать их в качестве шаблона для выполнения разбиения, не теряя при этом сам шаблон.
Допустим, что образец строкв форме:
test <- c("Some string that explains x. Conflict",
"Some string that explains y. Additional information. Precaution",
"Some string that explains z. Justification. Conflict")
Я хочу разбить эти строки на следующий список:
[1] "Some string that explains x."
[2] "Conflict"
[3] "Some string that explains y. Additional information."
[4] "Precaution"
[5] "Some string that explains z. Justification."
[6] "Conflict"
В центре моей проблемы, мне нужно сохранить порядок.
Очевидно, что я упомянул шаблон:
pattern <- c("Conflict", "Precaution")
Большинство строк, которые у меня изначально были, имели двойной пробел между пояснительной частью и так называемым шаблоном, поэтому я мог просто использовать
unlist(strsplit(test, "\\s{2,}"))
чтобы дифференцировать их.Теперь я понимаю, что некоторые из них имеют только один пробел между ними, и этот метод больше не может функционировать, поскольку пояснительная строка будет разделена для каждого из его отдельных слов.
Извлечение их было вариантом, который я посмотрел, но когда я попытался, я бы потерял порядок, который должен сохранить (в итоге я создаю новый список только с извлеченной подстрокой).
Сstrsplit()
, я не могу использовать указанный шаблон для функции, поскольку, разбивая строку на него, я удаляю сам шаблон.Я попытался использовать gsub()
трюк, который я нашел, чтобы окружить шаблон "~", а затем разделить его соответствующим образом, но я оказался неудачным.
А именно,
> unlist(strsplit(test, pattern))
[1] "Some string that explains x. "
[2] "Some string that explains y. Additional information. "
[3] "Some string that explains z. Justification. "
По сути, какЯ мог бы разделить строки, используя указанный шаблон и получить желаемый результат?Кроме того, есть ли способ извлечь шаблон из исходных строк и вставить их в список в правильном порядке?