Существует некоторый вопрос относительно того, что именно мы знаем о положении желаемого поля, но если мы знаем, что это 4-е / -отделенное поле или 3-е от последнего, мы можем использовать (1) или (2) соответственно. (Если ни один из них не может быть принят, пожалуйста, уточните, как мы знаем, какое поле желательно.)
1) read.table Используя вектор символов ss
в примечании ниже в качестве ввода, мы можем использовать read.table
, если мы знаем, что нужное поле находится между третьей и четвертой косой чертой.
read.table(text = ss, sep = "/", fill = TRUE, as.is = TRUE)[[4]]
## [1] "nameofpage" "nameofpage"
1a) Использование separate
:
library(tidyr)
separate(data.frame(ss), ss, c(NA, NA, NA, "target"), sep = "/", extra = "drop")
## target
## 1 nameofpage
## 2 nameofpage
2) dirname / basement Мы можем использовать dirname
и basename
, если мы знаем, что требуемое поле является третьим прошедшим полем:
basename(dirname(dirname(ss)))
## [1] "nameofpage" "nameofpage"
Примечание
s <- "https://www.facebook.com/nameofpage/posts/13142894231"
ss <- c(s, s)