[R] How do I get just the two last tokens of each string in a vector?

Stavros Macrakis macrakis at alum.mit.edu
Fri Jun 26 16:24:29 CEST 2009


One way is:

a <- c(" %L H*L L*H H%", "%L H* H%",  "%L L*H %",   "%L L*H %" )

> sub("^.*(^| )([^ ]+ [^ ]+$)","\\2",a)
[1] "L*H H%" "H* H%"  "L*H %"  "L*H %"

Just be aware that this is not terribly efficient for very large strings.

            -s

On Fri, Jun 26, 2009 at 7:21 AM, Fredrik Karlsson<dargosch at gmail.com> wrote:
> Dear list,
>
> Sorry for asking this very silly question on the list, but I seem to
> have made my life complicated by going into string manipulation in
> vectors.
> What I need is to get the last part of a sting (the two last tokens,
> separated by a space), and of course, this should be done for all
> strings in a vector, creating a new vector of exual size.
>
> So,
>
> a <- c(" %L H*L L*H H%", "%L H* H%",  "%L L*H %",   "%L L*H %" )
>
> should be made into a vector
>
>  c(" L*H H%", "H* H%",  "L*H %",   "L*H %" )
>
> I have tried strsplit, but it seems to produce a structure I cannot
> get to work in this context. Any ideas on how to solve this?
>
> Thankful for all the help I can get.
>
> /Fredrik
>
>
> --
> "Life is like a trumpet - if you don't put anything into it, you don't
> get anything out of it."
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>




More information about the R-help mailing list