2017-06-26 27 views
1

的最后一个字符考虑这样的数据:提取直到字符串

str <- c("OTB_MCD_100-119_0_0", "PS_SPF_16-31_0_0", "PP_DR/>16-77") 

如何将它做成一个像这样的字符串?

str 
[1] "OTB_MCD" "PS_SPF" "PP_DR" 

我试过substr,但是它在字符长度不同时不起作用。

+0

更换目前还不清楚你想要做什么,是你想要删除的位*总是*连字符后面的位? – anotherfred

+0

你想停在第一个数字(减去最后一个连字符?) – Arault

回答

2

我们可以使用sub匹配后跟0个或多个字符不属于字母([^A-Za-z]*),直到字符串的结尾($)零个或多个_,与空白(""

sub("_*[^A-Za-z]*$", "", str) 
#[1] "OTB_MCD" "PS_SPF" "PP_DR" 
+0

对不起,但它不工作:[1]“OTB_MCD”“PS_SPF”“PP_DR /> 16-77” –

+0

@JeppeOlsen更新了帖子 – akrun