R 删除最后一个逗号之前的所有文本

R 删除最后一个逗号之前的所有文本,r,R,具有如下数据帧: data.frame(id = c(1,2,3,4), text = c("text, another, end","not, keep","not, to keep, this","finally, chance, to, check")) 如何检测每行文本列中的最后一个逗号并删除之前的逗号 预期产出示例: data.frame(id = c(1,2,3,4), text = c("end","keep","this","check")) 使用sub,我们可以删除最后一个

具有如下数据帧:

data.frame(id = c(1,2,3,4), text = c("text, another, end","not, keep","not, to keep, this","finally, chance, to, check"))
如何检测每行文本列中的最后一个逗号并删除之前的逗号

预期产出示例:

data.frame(id = c(1,2,3,4), text = c("end","keep","this","check"))

使用
sub
,我们可以删除最后一个逗号之前(包括最后一个逗号)的所有内容,以及最后一个逗号后面可能出现的任何空白

df$text <- sub("^.*,\\s*", "", df$text)
df

id  text
1  1   end
2  2  keep
3  3  this
4  4 check

df$text使用
sub
,我们可以删除包括最后一个逗号在内的所有内容,以及最后一个逗号后面的任何空格

df$text <- sub("^.*,\\s*", "", df$text)
df

id  text
1  1   end
2  2  keep
3  3  this
4  4 check

df$textregex本质上是默认贪婪的,因此实际上不需要找到最后一个逗号本身

sub('.*, ', '', df$text)
#[1] "end"   "keep"  "this"  "check"

正则表达式本质上是默认贪婪的,所以实际上不需要找到最后一个逗号

sub('.*, ', '', df$text)
#[1] "end"   "keep"  "this"  "check"

Base R,更详细,效率更低,无正则表达式:

df <- sapply(strsplit(as.character(df$text), ", "), function(x){x[length(x)]})

dfBase R,更详细,效率更低,没有正则表达式:

df <- sapply(strsplit(as.character(df$text), ", "), function(x){x[length(x)]})
df-Try:
sub(“.*”,“,”,x$text)
sub(“.*”,“,”,df$text)
Try:
sub(“.*”,“,”,x$text)