[R] Splitting the string at the last sub-string
Barry Rowlingson
B.Rowlingson at lancaster.ac.uk
Thu Sep 15 16:01:36 CEST 2005
Prof Brian Ripley wrote:
>>substring(str, c(1, 26), c(25,length(str)))
nchar(str) surely?
regexps can be rather slow though. Here's two functions:
byRipley =
function(str,sub){
lp=attr(regexpr(paste(".*",sub,sep=""),str),'match.length')
return(substring(str, c(1, lp+1), c(lp,nchar(str))))
}
byJarek =
function(str,sub){
y = unlist(strsplit(str,sub))
return(cbind(paste(y[-length(y)], sub, sep="", collapse = ""),
y[length(y)]))
}
and a quick test:
> system.time(for(i in 1:100000){byJarek(str,sub)})
[1] 15.55 0.10 16.06 0.00 0.00
> system.time(for(i in 1:100000){byRipley(str,sub)})
[1] 30.28 0.07 31.86 0.00 0.00
Baz
More information about the R-help
mailing list