2016-11-06 4 views
0

Я хочу использовать str_view из stringr в R, чтобы найти все слова, начинающиеся с «y», и все слова, которые заканчиваются на «x». У меня есть список слов, созданных Corpora, но всякий раз, когда я запускаю код, он возвращает пустой вид.Использование str_view со списком слов в R

Common_words<-corpora("words/common") 

#start with y 
start_with_y <- str_view(Common_words, "^[y]", match = TRUE) 
start_with_y 

#finish with x 
str_view(Common_words, "$[x]", match = TRUE) 

Кроме того, я хотел бы найти слова, которые давно только три буквы, но нет идеи до сих пор.

+2

Просьба предоставить [MCVE (минимальный полный проверяемым пример)] (http://stackoverflow.com/help/mcve) , –

+0

Извините, что вы подразумеваете под минимальным полным проверяемым примером? – Rfanatic

+0

Эта ссылка объясняет это? :) Как насчет 'str_view (s, '^ y (.) * X $')' – Gopala

ответ

0

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

Здесь класс \\w или короткие руки для символов слова (т.е. [A-Za-z0-9_]) полезно с кванторы (+ и {3} в этих 2 случаях). PS здесь я использую stringi, потому что stringr использует это в бэкэнде в любом случае. Просто пропустите среднего человека.

x <- c("I like yax because the rock to the max!", 
    "I yonx & yix to pick up stix.") 

library(stringi) 

stri_extract_all_regex(x, 'y\\w+x') 
stri_extract_all_regex(x, '\\b\\w{3}\\b') 

## > stri_extract_all_regex(x, 'y\\w+x') 
## [[1]] 
## [1] "yax" 
## 
## [[2]] 
## [1] "yonx" "yix" 


## > stri_extract_all_regex(x, '\\b\\w{3}\\b') 
## [[1]] 
## [1] "yax" "the" "the" "max" 
## 
## [[2]] 
## [1] "yix" 

EDIT Похоже, они могут быть использованы также:

## Just y starting words 
stri_extract_all_regex(x, 'y\\w+\\b') 

## Just x ending words 
stri_extract_all_regex(x, 'y\\w+x') 

## Words with n or more characters 
stri_extract_all_regex(x, '\\b\\w{4,}\\b') 
+0

Спасибо, это здорово! – Rfanatic

+0

Привет, вы знаете, как, используя этот код того же типа, я мог бы указать, что мне нужны все слова выше 6 букв, кроме простого повторения кода для 6,7, 8 и т. Д.? Благодаря! – Rfanatic

+0

Обязательно используйте квантор с открытым концом '' \\ b \\ w {6,} \\ b''. Проведите немного времени с помощью учебников, с которыми я связан. Они хорошо стоят времени. –