Ответ 1
tail(strsplit('this is a sentence',split=" ")[[1]],1)
В принципе, как было предложено @Señor O.
Какой самый элегантный способ извлечь последнее слово в строке предложения?
Предложение не заканчивается символом "." Слова разделены пробелами.
sentence <- "The quick brown fox"
TheFunction(sentence)
должен вернуться: "лиса"
Я не хочу использовать пакет, если возможно простое решение. Если существует простое решение на основе пакета, это тоже прекрасно.
tail(strsplit('this is a sentence',split=" ")[[1]],1)
В принципе, как было предложено @Señor O.
Только для полноты: библиотека stringr содержит функцию для этой проблемы.
library(stringr)
sentence <- "The quick brown fox"
word(sentence,-1)
[1] "fox"
x <- 'The quick brown fox'
sub('^.* ([[:alnum:]]+)$', '\\1', x)
Это будет ловить последнюю строку чисел и символов до конца строки.
Вы также можете использовать функции regexec
и regmatches
, но я нахожу sub
cleaner:
m <- regexec('^.* ([[:alnum:]]+)$', x)
regmatches(x, m)
Подробнее см. ?regex
и ?sub
.
Другая упакованная опция stri_extract_last_words()
из пакета stringi
library(stringi)
stri_extract_last_words("The quick brown fox")
# [1] "fox"
Функция также удаляет любую пунктуацию, которая может быть в конце предложения.
stri_extract_last_words("The quick brown fox? ...")
# [1] "fox"
Переходя в направлении пакета, это самый простой ответ, который я могу придумать:
library(stringr)
x <- 'The quick brown fox'
str_extract(x, '\\w+$')
#[1] "fox"