функция stringr для объединения вектора слов, разделенных запятой, с «и» перед последним словом - PullRequest
2 голосов
/ 10 мая 2019

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

Ответы [ 2 ]

7 голосов
/ 10 мая 2019

Вы можете использовать функцию 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"
2 голосов
/ 11 мая 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"

Создано в 2019-05-11 пакетом Представить (v0.2.1)

...