首页 > 解决方案 > 在R中nchars的某个点之前提取所有“整个”字符元素?

问题描述

有一个我认为应该直截了当的问题,可能只是我对 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)。

为糟糕的标题道歉 - 开放编辑!

标签: rcharextract

解决方案


我们创建一个逻辑索引cumsum来对单词进行子集化

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

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

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

推荐阅读