我正在尝试根据以下条件将一个字符串向量分成两部分(我只想保留第一位):
- 它应该在一个完整的单词之后拆分(即出现空格的地方)
- 它应该在离第 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/