У меня есть строки, содержащие строки, такие как
bye-hi-hello-seeya
В частности, я хочу извлечь "привет", строку перед последним дефисом, или вы можете видеть ее как строку между последними двумя дефисами.
Просмотрел несколько примеров в Интернете, но, похоже, не нашел конкретных примеров, где мы смотрим на количество дефисов.
2 ответа
Мы можем использовать sub
для извлечения текста между двумя последними дефисами.
sub(".*-(.*)-.*", "\\1", "bye-hi-hello-seeya")
#[1] "hello"
sub(".*-(.*)-.*", "\\1", "bye-hi-seeya")
#[1] "hi"
Строка перед последним дефисом может быть записана как
sub(".*?(\\w+)-\\w+$", "\\1", "bye-hi-hello-seeya")
#[1] "hello"
Мы можем использовать word
из stringr
library(stringr)
word(str1, -2, sep="-")
#[1] "hello"
word(str1, -3, sep="-")
#[1] "hi"
Данные
str1 <- "bye-hi-hello-seeya"
Похожие вопросы
Связанные вопросы
Новые вопросы
r
R — это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, используйте минимально воспроизводимые примеры, которые другие могут запустить с помощью копирования и вставки. Показать желаемый результат полностью. Используйте dput() для данных и укажите все небазовые пакеты с помощью library(). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. Для вопросов по статистике используйте https://stats.stackexchange.com.