R 从字符串中删除前两个单词

R 从字符串中删除前两个单词,r,R,我有一段文字: s="Daniel S Hi What are you doing today" s1="Mary G I am occupied with some work today" s2="Cindy U Hey you guys are joining today's conference" 我想从所有文本中删除前两个单词,我刚刚给出了3个文本,但还有更多的像这样的文本,前两个单词的模式将是相同的,第一个单词是一些名称,第

我有一段文字:

s="Daniel S Hi What are you doing today"
s1="Mary G I am occupied with some work today"
s2="Cindy U Hey you guys are joining today's conference"
我想从所有文本中删除前两个单词,我刚刚给出了3个文本,但还有更多的像这样的文本,前两个单词的模式将是相同的,第一个单词是一些名称,第二个单词是单个字母表

预期产出:

s="Hi What are you doing today"
s1="I am occupied with some work today"
s2="Hey you guys are joining today's conference"

可以使用正则表达式从每个文本中删除前两个单词

x <- c("Daniel S Hi What are you doing today", "Mary G I am occupied with some work today", "Cindy U Hey you guys are joining today's conference")
sub('^\\w+\\s\\w+\\s', '', x)

#[1] "Hi What are you doing today"                 "I am occupied with some work today"         
#[3] "Hey you guys are joining today's conference"
x使用基本R:

str
[1] "Daniel S Hi What are you doing today"               
[2] "Mary G I am occupied with some work today"          
[3] "Cindy U Hey you guys are joining today's conference"
sapply(sapply(strsplit(str, split = ' '), function(x) x[3:length(x)]), paste, collapse = ' ')
[1] "Hi What are you doing today"                 "I am occupied with some work today"         
[3] "Hey you guys are joining today's conference"
基本R解决方案:

list2env(Map(function(x){gsub("\\w+\\s*\\w+\\s*(.*)", "\\1", x)}, 
    mget(ls(pattern = "^s.*"))), .GlobalEnv)

虽然regex方法没有错,但更具体的方法是用空格分割字符串,并删除结果的前两个索引。例如,
strsplit(X,”[-c(1,2),]