Извлечь все «целые» элементы символов до определенной точки nchars в R? - PullRequest
1 голос
/ 07 марта 2019

У меня был вопрос, который, как мне показалось, должен быть простым, возможно, это просто отсутствие знаний о семействе grep ().

Дан набор символов:

list <- c("the", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog")

Мы знаем, что sum(nchar(list)) - это 35.

Есть ли способ извлечь все «целые» элементы символа перед данным местом в объекте list, скажем, до 10, 15 или 20?

Например, если мы сделали 10, он должен извлечь «the» и «quick», но не «brown» (или любой из остальных list).

Извинения за плохое название - открыты для редактирования!

1 Ответ

2 голосов
/ 07 марта 2019

Мы создаем логический индекс с cumsum для подстановки слов

f1 <- function(vec, n) {
    vec[cumsum(nchar(vec)) < n]
  }

f1(list, 10)
#[1] "the"   "quick"

f1(list, 15)
#[1] "the"   "quick" "brown"
...