Есть вектор с словами
# текст
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)
то слово найти уже не получиться
Вопрос как сделать поиск слов не чувствительным к регистру?
Ответ
Можно использовать функцию 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"
Комментариев нет:
Отправить комментарий