我正在尝试根据以下标准将字符串向量分成两部分(我只想保留第一部分):
示例:
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个字符。如果有平局,我想在第12个字符后面加上这个词。我希望我能清楚地解释自己:)
答案 0 :(得分:3)
使用cumsum
,
sapply(strsplit(textvec, ' '), function(i) paste(i[cumsum(nchar(i)) <= 12], collapse = ' '))
#[1] "this is an" "I hope someone" "Thank you in"
答案 1 :(得分:2)
我们可以使用gregexpr
在12处找到最近的空格,然后用substr
剪切字符串
substr(textvec, 1, sapply(gregexpr("\\s+", textvec),
function(x) x[which.min(abs(12 - x))])-1)
#[1] "this is an" "I hope someone" "Thank you in"