Извлекать все «целые» символьные элементы до определенной точки nchars в R?

#r #char #extract

#r #символ #извлекать

Вопрос:

Возник вопрос, который, как я думал, должен быть простым, возможно, это просто недостаток знаний о семействе 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:

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

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

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

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

Комментарии:

1. Будет принято, как только истечет отведенное время — удивительно быстрый ответ!

2. пока я привлекаю ваше внимание, могу я спросить, как долго вы переходите на R?

3. @ReputableMisnomer, вероятно, из 2006 (как новичок). Но не слишком задумывайтесь о времени первого запуска, потому что я впервые начал с C до этого

4. Всегда интересно взглянуть на путешествие по R / кодированию — я начал только зимой 2016 года — с нетерпением жду конца путешествия и надеюсь достичь вашего уровня! Еще раз приветствую ответ! (приносим извинения за расширенное обсуждение в комментариях)

5. @ReputableMisnomer уверен, вы определенно смогли бы достичь любого уровня . Практика, терпение, чтение и т.д. Являются ключевыми. Я видел многих людей, которые за пару лет так начали и стали отличными программистами, что мне трудно конкурировать : =)