注意:前面的问题改写为实际的问题。
# **Previous question:**
# How to extract words from a string beginning from the end of the string?
str1 <- "then you must be in fact a wonderful kid"
# Desired answer for each command:
# "kid"
# "wonderful kid"
# "a wonderful kid"
# "fact a wonderful kid"
重新格式化的问题:
更具体:
如何从未知字符串中提取最后4个单词?
答案 0 :(得分:2)
您可以将矢量化的substring
与rev
一起使用,如下所示:
rev(substring(str1,gregexpr("(?<= )",str1,perl=TRUE)[[1]],nchar(str1)))
[1] "kid" "wonderful kid"
[3] "a wonderful kid" "fact a wonderful kid"
[5] "in fact a wonderful kid" "be in fact a wonderful kid"
[7] "must be in fact a wonderful kid" "you must be in fact a wonderful kid"
注意:更改最初使该回答过时的问题。这里的问题与之前的完全不同。您应该另外考虑每次提出不同的问题,而不要更改原始问题。
答案 1 :(得分:2)
使用stringr
,我们可以将word
与参数start = -4
和end = -1
一起使用来提取句子的最后四个单词:
str1 <- "then you must be in fact a wonderful kid"
stringr::word(str1, start = -4, end = -1)
#> [1] "fact a wonderful kid"
答案 2 :(得分:0)
您可以使用sub
从字符串中提取最后4个单词,例如:
str1 <- "then you must be in fact a wonderful kid"
sub(".*(( *\\b\\w+){4})$", "\\1", str1)
#[1] "fact a wonderful kid"
在字符串少于4个单词的情况下也可以使用。
str1 <- "then you must"
sub(".*(( *\\b\\w+){4})$", "\\1", str1)
#[1] "then you must"