gsub()
не для извлечения, вот что не так с вашим кодом. Это для замены. (См. help("gsub")
). Для этой демонстрации я буду использовать следующие данные:
x <- c("abc", "123", "http://site.nc")
(я, как правило, не буду загружать данные, размещенные здесь в качестве ссылки. Большинство других также не будут. Если вы хотите,чтобы поделиться примерами данных, лучше всего сделать это, включив в свой вопрос вывод dput()
).
Давайте посмотрим, что происходит с вашим подходом gsub()
:
gsub(pattern = ".*(http://.*nc).*", replacement = "\\1", x = x)
# [1] "abc" "123" "http://site.nc"
Looksзнакомый. Здесь происходит то, что gsub()
просматривает каждый элемент x
и заменяет каждое вхождение pattern
на replacement
, которое в данном случае само по себе. При таком подходе вы всегда получите обратно тот же самый символьный вектор.
Я бы предложил stringr::str_extract()
:
stringr::str_extract(string = x, pattern = ".*http://.*nc.*")
# [1] NA NA "http://site.nc"
Если вы оберните это в na.omit()
, это даст вам выводЯ думаю, что вы хотите:
na.omit(stringr::str_extract(string = x, pattern = ".*http://.*nc.*"))
# [1] "http://site.nc"