Re: [R] numbers as part of long character

From: Marc Schwartz <marc_schwartz_at_comcast.net>
Date: Thu, 12 Jun 2008 16:06:41 -0500

on 06/12/2008 03:46 PM Hua Li wrote:
> Hi,
>
> I'm looking for some way to pick up the numbers which are contained and buried in a long character.
>
> For example,
>
> outtree.new="(((B:1204.25,E:1204.25):7581.11,F:8785.36):8353.85,C:17139.21);"
>
> num.char = unlist(strsplit(unlist(strsplit(unlist(strsplit(unlist(strsplit(unlist(strsplit(outtree.new,")",fixed=TRUE)),"(",fixed=TRUE)),":",fixed=TRUE)),",",fixed=TRUE)),";",fixed=TRUE))
>
> num.vec=as.numeric(num.char[1:(length(num.char)-1)])
>
> num.char
> # "B" "1204.25" "E" "1204.25" "7581.11" "F" "8785.36" "8353.85" "C" "17139.21" ""
>
> num.vec
> # NA 1204.25 NA 1204.25 7581.11 NA 8785.36 8353.85 NA 17139.21
>
> would help me get the numbers such as 1204.25, 7581.11, etc, but with a warning message which reads:
> "Warning message:
> NAs introduced by coercion "
>
> Is there a way to get around this? Thanks!
>
> Hua
>

Your code above is overly and needlessly complicated, which makes it difficult to debug.

I would take an approach whereby you use gsub() to strip non-numeric characters from the input character vector and then use scan() to read the remaining numbers:

 > Vec <- scan(textConnection(gsub("[^0-9\\.]+", " ", outtree.new))) Read 6 items

 > Vec
[1] 1204.25 1204.25 7581.11 8785.36 8353.85 17139.21

 > str(Vec)
  num [1:6] 1204 1204 7581 8785 8354 ...

The result of using gsub() above is:

 > gsub("[^0-9\\.]+", " ", outtree.new)
[1] " 1204.25 1204.25 7581.11 8785.36 8353.85 17139.21 "

That gives you a character vector which can then be passed to scan() as a textConnection().

See ?gsub, ?regex, ?textConnection and ?scan for more information.

HTH, Marc Schwartz



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. Received on Thu 12 Jun 2008 - 21:20:00 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 12 Jun 2008 - 22:30:48 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive