2014-11-18 3 views
0

Как использовать R-векторию для удаления этого цикла?vectorize stringr str_match, чтобы удалить цикл for

library(stringr) 
url <- c("http://www.slate.fr/france/87869/mehdi-nemmouche-bruxelles", "http://www.slate.fr/story/87347/turquie-opposition-geek", "http://www.slate.fr/grand-format/paysages-debarquement-photos-1944-aujourdhui") 

for (i in 1:length(url)) { 
a[i]<-str_match(url[i], "http://.*slate.fr/(.*?)/")[2] 
} 

Это не работает:

a<-str_match(url, "http://.*slate.fr/(.*?)/")[2] 

ответ

1

Вы должны использовать [,2] вместо [2], потому что выход есть 2 колонки matrix и индексации [2], вы получаете только 2-го элемента, т.е. "http://www.slate.fr/story/" вместо столбца 2nd`.

str_match(url, "http://.*slate.fr/(.*?)/")[,2] 
#[1] "france"  "story"  "grand-format" 

Из описания ?str_match

Vectorised над «строка». «Pattern» должен быть одним шаблоном, т. Е. Символьным вектором длины один.

Смежные вопросы