У меня есть датафрейм с одним столбцом, который представляет запросы, сделанные моими пользователями. Несколько примеров выглядят так:
GET /enviro/html/tris/tris_overview.html
GET /./enviro/gif/emcilogo.gif
GET /docs/exposure/meta_exp.txt.html
GET /hrmd/
GET /icons/circle_logo_small.gif
Я хочу выбрать только последнюю часть строки после последней "." таким образом, что я возвращаю тип страницы строки. Выходные данные этих строк должны быть:
.html
.gif
.html
.gif
Я попытался сделать это с помощью sub, но мне удается выбрать все только после первого "." Пример:
tring <- c("GET /enviro/html/tris/tris_overview.html", "GET /./enviro/gif/emcilogo.gif", "GET /docs/exposure/meta_exp.txt.html", "GET /hrmd/", "GET /icons/circle_logo_small.gif")
sub("^[^.]*", "", sapply(strsplit(tring, "\\s+"), `[`, 2))
это возвращает:
".html"
"./enviro/gif/emcilogo.gif"
".txt.html"
""
".gif"
Я создал следующий код gsub, который работает для строки, содержащей две точки:
gsub(pattern = ".*\\.", replacement = "", "GET /./enviro/gif/finds.gif", "\\s+")
это возвращает:
"gif"
Тем не менее, я не могу придумать один gsub / sub, который работает для всех возможных вводов. Следует читать строку справа налево. Остановись, когда увидит первый "." и вернуть все, что было найдено после этого "."
Я новичок в R и не могу придумать что-то, что делает это. Любая помощь будет принята с благодарностью!