функция stringr для объединения вектора слов, разделенных запятой, с последним словом и перед ним

Я знаю, что могу легко написать его, но кто-нибудь знает, есть ли у stringr (или stringi) уже функция, которая объединяет вектор из одного или нескольких слов, разделенных запятыми, но с "и" перед последним словом?


person code_cowboy    schedule 10.05.2019    source источник


Ответы (2)


Вы можете использовать функцию knitr::combine_words

knitr::combine_words(letters[1:2])
# [1] "a and b"
knitr::combine_words(letters[1:3])
# [1] "a, b, and c"
knitr::combine_words(letters[1:4])
# [1] "a, b, c, and d"
person MrFlick    schedule 10.05.2019
comment
Большое спасибо. Я удивлен, что этой функции нет в stringr - person code_cowboy; 10.05.2019

Вот еще одно решение:

enum <- function(x) 
  paste(c(head(x,-2), paste(tail(x,2), collapse = ", and ")), collapse = ", ")
enum(letters[1])
#> [1] "a"
enum(letters[1:2])
#> [1] "a, and b"
enum(letters[1:3])
#> [1] "a, b, and c"
enum(letters[1:4])
#> [1] "a, b, c, and d"

Создано 11 мая 2019 г. с помощью пакета reprex (v0.2.1)

person Moody_Mudskipper    schedule 10.05.2019