r - 在最接近特定字符数的完整单词处剪切字符串

标签 r string

我正在尝试根据以下条件将一个字符串向量分成两部分(我只想保留第一位):

  • 它应该在一个完整的单词之后拆分(即出现空格的地方)
  • 它应该在离第 12 个字符最近的空格处剪切

例子:

textvec <- c("this is an example", "I hope someone can help me", "Thank you in advance")

预期结果是这样的向量:

"this is an" , "I hope someone", "Thank you in"

到目前为止我尝试了什么: 我能够像这样获得出现在第 12 个字符之前或处的完整单词:

t13 <- substr(textvec , 1, 13) #gives me first 13 characters of each string
lastspace <- lapply(gregexpr(" ", t13), FUN=function(x) x[length(x)]) #gives me last space before/at 13th character
result <- substr(t13, start=1, stop=lastspace)

但我想要的是包含最接近第 12 个字符的单词(例如上例中的“某人”),不一定在第 12 个字符之前或处。如果出现平局,我想在第 12 个字符之后加上这个词。我希望我能清楚地解释自己:)

最佳答案

使用cumsum

sapply(strsplit(textvec, ' '), function(i) paste(i[cumsum(nchar(i)) <= 12], collapse = ' '))

#[1] "this is an"     "I hope someone" "Thank you in"

关于r - 在最接近特定字符数的完整单词处剪切字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45192909/

相关文章:

r - 没有使用 RMySQL 选择数据库

rJAVA 错误的 Java 版本

r - 使用动态列名以编程方式分配 data.table 中的列

string - O(n) 时间复杂度和 O(1) 空间复杂度的方法来查看两个字符串是否彼此排列

r - 如何从插入符号包拆分数据的createDataPartition功能?

r - 传单/ Shiny : cannot draw reactive polygons

r - 从 r 中的名称列表中提取前两个字符

python - 如何将 _io.TextIOWrapper 转换为字符串?

string - 如何使用 fmt.scanln 从以空格分隔的字符串中读取

java - 在 String Java 中替换元音计数器