Обнаружение подстроки для 1-го слова - PullRequest
0 голосов
/ 12 апреля 2019

Я обнаруживаю подстроки в отчетах, а затем добавляю суффиксные слова в конец отчетов в зависимости от того, присутствует или отсутствует подстрока. Короткие слова опасны, так как они обычно являются частью более длинных слов. Пример: ear и overb ear ing. Пробел имеет тенденцию быть разумным решением. Поэтому вместо поиска подстроки 'ear' я буду использовать 'ear'. Обратите внимание на пробел перед подстрокой. И нет пробелов в конце подстроки, так как я не хочу пропустить множественные уши . Проблема в том, что первое слово во всем отчете - ухо. Там нет ведущих пробелов.

Я попытался решить проблему с библиотекой stringr, но добавил пробел в начало каждого отчета, но текст возвращается без изменений.

(stringr)
Data$Fail <- str_pad(Data$text, width = 1, side = "left")

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Data$Fail <- str_pad(Data$text, width = 1, side = "left") не сработало, потому что str_pad() добавляет строку к фиксированной длине , которую вы указали как width = 1, поэтому он вставил бы пробел, только если текст был изначально пуст .

Но если вы просто хотите вставить пробел в начале строки, вам не нужна специальная библиотека - text = paste("", text) подойдет.

0 голосов
/ 12 апреля 2019

Armali уже ответил на ваш вопрос (используйте paste('',text)), чтобы добавить пробел перед ухом. Так как вы также хотите сопоставить Ухо в начале предложения, вы можете лучше использовать регулярное выражение, как указано HO LI Pin.

pattern <- '(?<![A-z])[Ee]ar'

Это будет соответствовать E / ear, только если не предшествует любая другая буква (таким образом, ему могут предшествовать такие вещи, как _, ( и т. Д., Но это не ясно из вашего вопрос, разрешено это или нет. Тогда вы можете использовать базовую R или более простую библиотеку stringr для поиска всех совпадений, используя этот шаблон регулярного выражения:

library(stringr)
pattern <- '(?<![A-z])[Ee]ar'
text = 'Ear this is some nice text as you can hear with your ear about overbearing'

unlist(str_extract_all(text, pattern, simplify = FALSE))

Что даст вам:

[1] "Ear" "ear"
...