#r
Есть вектор с словами
# текст
text <- c("R is a very essential tool for data analysis. While it
is regarded as domain specific, it is a very complete programming
language. Almost certainly, many people who would benefit from
using R, do not use it")
# разбиваю текст на вектор сo словами с пом. пакета stringr
text <- unlist( stringr::str_match_all(text , '\\w+\\b') )
text
[1] "R" "is" "a" "very" "essential" "tool"
"for"
[8] "data" "analysis" "While" "it" "is" "regarded"
"as"
[15] "domain" "specific" "it" "is" "a" "very"
"complete"
[22] "programming" "language" "Almost" "certainly" "many" "people"
"who"
[29] "would" "benefit" "from" "using" "R" "do"
"not"
[36] "use" "it"
Я хочу найти в нем слово "using"
text[text=="using"]
[1] "using"
все нормально, все находит
но если немножко изменить регистр
text[text=="Using"]
character(0)
то слово найти уже не получиться
Вопрос как сделать поиск слов не чувствительным к регистру?
Ответы
Ответ 1
Можно использовать функцию grep grep("Using",text,ignore.case=TRUE,value=TRUE) ignore.case=TRUE- игнор регистра value=TRUE - Возврат значения из вектора, а не позиции найденного слова UPD grep будет искать вхождения. Поэтому поиск "it" вернет не совсем верный результат: grep("it",text,ignore.case=TRUE,value=T,useBytes = T) [1] "it" "it" "benefit" "it" в этом случае функция regexpr отработает лучше: match<-regexpr("IT$",text,ignore.case=TRUE) text[match==1] [1] "it" "it" "it"Ответ 2
Достаточно привести слова в векторе к одному регистру: text <- tolower(text)
Комментариев нет:
Отправить комментарий