2015-10-18 2 views
4

Я пытаюсь заменить определенный символ в строке, но по мере того, как этот шаблон повторяется, я решил заменить его итерационным использованием RegExes, если это возможно. Для примера рассмотрим ссылку http://www.bbc.co.uk/food/ingredients/by/letter/aКак заменить символ в строке с помощью RegEx в R

Я хочу, чтобы заменить последний «а» с «B», затем «с», а «D» и так далее, пока «г» итеративно. регулярное выражение для работы с этим просто:

http:\/\/www\.bbc\.co\.uk\/food\/ingredients\/by\/letter\/[a-z]

это было бы проверить строку, но я хотел бы автоматизировать процесс генерации ссылок. Я совершенно новичок в «R», и я хотел бы знать, возможно ли что-то подобное.

ответ

3

Вы можете создать такой список ссылок следующим образом с paste0:

l <- paste0("http://www.bbc.co.uk/food/ingredients/by/letter/", letters) 

который приводит в следующем списке:

> l 
[1] "http://www.bbc.co.uk/food/ingredients/by/letter/a" 
[2] "http://www.bbc.co.uk/food/ingredients/by/letter/b" 
[3] "http://www.bbc.co.uk/food/ingredients/by/letter/c" 
[4] "http://www.bbc.co.uk/food/ingredients/by/letter/d" 
[5] "http://www.bbc.co.uk/food/ingredients/by/letter/e" 
[6] "http://www.bbc.co.uk/food/ingredients/by/letter/f" 
[7] "http://www.bbc.co.uk/food/ingredients/by/letter/g" 
[8] "http://www.bbc.co.uk/food/ingredients/by/letter/h" 
[9] "http://www.bbc.co.uk/food/ingredients/by/letter/i" 
[10] "http://www.bbc.co.uk/food/ingredients/by/letter/j" 
[11] "http://www.bbc.co.uk/food/ingredients/by/letter/k" 
[12] "http://www.bbc.co.uk/food/ingredients/by/letter/l" 
[13] "http://www.bbc.co.uk/food/ingredients/by/letter/m" 
[14] "http://www.bbc.co.uk/food/ingredients/by/letter/n" 
[15] "http://www.bbc.co.uk/food/ingredients/by/letter/o" 
[16] "http://www.bbc.co.uk/food/ingredients/by/letter/p" 
[17] "http://www.bbc.co.uk/food/ingredients/by/letter/q" 
[18] "http://www.bbc.co.uk/food/ingredients/by/letter/r" 
[19] "http://www.bbc.co.uk/food/ingredients/by/letter/s" 
[20] "http://www.bbc.co.uk/food/ingredients/by/letter/t" 
[21] "http://www.bbc.co.uk/food/ingredients/by/letter/u" 
[22] "http://www.bbc.co.uk/food/ingredients/by/letter/v" 
[23] "http://www.bbc.co.uk/food/ingredients/by/letter/w" 
[24] "http://www.bbc.co.uk/food/ingredients/by/letter/x" 
[25] "http://www.bbc.co.uk/food/ingredients/by/letter/y" 
[26] "http://www.bbc.co.uk/food/ingredients/by/letter/z" 
+0

работает как шарм, благодаря @Jaap –

3

Извлечь имя каталога (т.е. все до/а) и затем добавить каждую букву с использованием встроенной переменной letters:

u <- "http://www.bbc.co.uk/food/ingredients/by/letter/a" # input string 
file.path(dirname(u), letters) 

, который дает этот символ вектор:

[1] "http://www.bbc.co.uk/food/ingredients/by/letter/a" 
[2] "http://www.bbc.co.uk/food/ingredients/by/letter/b" 
[3] "http://www.bbc.co.uk/food/ingredients/by/letter/c" 
[4] "http://www.bbc.co.uk/food/ingredients/by/letter/d" 
[5] "http://www.bbc.co.uk/food/ingredients/by/letter/e" 
[6] "http://www.bbc.co.uk/food/ingredients/by/letter/f" 
[7] "http://www.bbc.co.uk/food/ingredients/by/letter/g" 
[8] "http://www.bbc.co.uk/food/ingredients/by/letter/h" 
[9] "http://www.bbc.co.uk/food/ingredients/by/letter/i" 
[10] "http://www.bbc.co.uk/food/ingredients/by/letter/j" 
[11] "http://www.bbc.co.uk/food/ingredients/by/letter/k" 
[12] "http://www.bbc.co.uk/food/ingredients/by/letter/l" 
[13] "http://www.bbc.co.uk/food/ingredients/by/letter/m" 
[14] "http://www.bbc.co.uk/food/ingredients/by/letter/n" 
[15] "http://www.bbc.co.uk/food/ingredients/by/letter/o" 
[16] "http://www.bbc.co.uk/food/ingredients/by/letter/p" 
[17] "http://www.bbc.co.uk/food/ingredients/by/letter/q" 
[18] "http://www.bbc.co.uk/food/ingredients/by/letter/r" 
[19] "http://www.bbc.co.uk/food/ingredients/by/letter/s" 
[20] "http://www.bbc.co.uk/food/ingredients/by/letter/t" 
[21] "http://www.bbc.co.uk/food/ingredients/by/letter/u" 
[22] "http://www.bbc.co.uk/food/ingredients/by/letter/v" 
[23] "http://www.bbc.co.uk/food/ingredients/by/letter/w" 
[24] "http://www.bbc.co.uk/food/ingredients/by/letter/x" 
[25] "http://www.bbc.co.uk/food/ingredients/by/letter/y" 
[26] "http://www.bbc.co.uk/food/ingredients/by/letter/z" 
+0

по достоинству оценить помощь @ г-гротендиковых –

0

Другой вариант:

library(stringi) 
v <- "http://www.bbc.co.uk/food/ingredients/by/letter/a" 
stri_replace_last(v, letters, regex = "[a-z]") 
Смежные вопросы