Разделение строки на основе букв - PullRequest
7 голосов
/ 03 ноября 2011

Я хочу разбить следующую строку

"ATextIWantToDisplayWithSpaces"

вот так

A Text I Want To Display With Spaces.

Я пробовал этот код в R

strsplit(x="ATextIWantToDisplayWithSpaces", split=[:upper:])

, который производит этоошибка

Error: unexpected '[' in "strsplit(x="ATextIWantToDisplayWithSpaces", split=["

Любая помощь будет высоко оценена.Спасибо

Ответы [ 3 ]

25 голосов
/ 03 ноября 2011

Просто сделай это. Он работает, (а) находя заглавную букву, (б) захватывая ее в группе и (в) заменяя ее той же самой пробелом перед ней.

gsub('([[:upper:]])', ' \\1', x)
7 голосов
/ 03 ноября 2011

Ответ на ваш конкретный вопрос («как разделить на заглавные буквы»?):

strsplit(x="ATextIWantToDisplayWithSpaces", split="[[:upper:]]")

но ответ @ Рамнатха - это то, что вы на самом деле хотите. strsplit выбрасывает символы, на которые он расщепляется. Функция splitByPattern из R.utils ближе, но она все равно не вернет результаты в наиболее удобной для вас форме.

0 голосов
/ 06 ноября 2018

Я знаю, что это старое решение, но я адаптировал приведенное выше решение к тому, которое было у меня, когда мне нужно было разделить значения столбца в фрейме данных на верхний регистр, а затем оставить только второй элемент. Это решение использует dplyr и purrr:

df %>% mutate(stringvar= map(strsplit(stringvar, "(?!^)(?=[[:upper:]])", perl=T),~.x[2]) %>% unlist())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...