Страницы

Поиск по вопросам

пятница, 20 декабря 2019 г.

регистр слов в R

#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)

Комментариев нет:

Отправить комментарий