Re: [R] Convert character string to number

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Sat, 21 Jun 2008 10:18:37 -0400

On Sat, Jun 21, 2008 at 8:31 AM, Wacek Kusnierczyk <Waclaw.Marcin.Kusnierczyk_at_idi.ntnu.no> wrote:
> Hans-Jrg Bibiko wrote:
>>
>> On 21.06.2008, at 01:36, Ken Liu wrote:
>>> I would like to convert a character vector
>>>
>>> xxx <- c("1/2", "1/4")
>>>
>>> to
>>>
>>> yyy <- c(0.5, 0.25)
>>>
>>>
>>> , but as.numeric didn't work for me. Could anyone give me a hint
>>> please?
>>
>> There are many many ways, and they're depending on the structure of
>> xxx. If you only have such fractions you can use this nave approach:
>>
>> as.numeric( gsub("(\\d+)/(\\d+)", "\\1", xxx, perl=T) ) / as.numeric(
>> gsub("(\\d+)/(\\d+)", "\\2", xxx, perl=T) )
>
> or:
>
> library(gsubfn)
> as.numeric(
> gsubfn("([0-9]+)/([0-9]+)",
> numerator+denominator~as.numeric(numerator)/as.numeric(denominator),
> xxx, backref=-2)
> )

strapply, also in the gsubfn package, could be used here in a similar way too:

> library(gsubfn)
> strapply(xxx, "([0-9]+)/([0-9]+)", ~ as.numeric(x) / as.numeric(y), backref = -2, simplify = c)
[1] 0.50 0.25

or

> fn$sapply(strapply(xxx, "[0-9]+", as.numeric), ~ x[1]/x[2])
[1] 0.50 0.25



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 Sat 21 Jun 2008 - 14:21:01 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 Sat 21 Jun 2008 - 16: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