[R] converting string vector to integer/numeric vector
David Winsemius
dwinsemius at comcast.net
Sun Sep 5 16:58:53 CEST 2010
On Sep 5, 2010, at 10:47 AM, rajesh j wrote:
> I'm sorry. you seem to have misunderstood my data representation for
> input.
Because you did not follow the Posting Guide's advice regarding
producing examples using valid R code. You give me text; I work on text.
#---------
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
#--------
I am going to change the name of the variable to cc because "c" is a
unfortunate name for a variable, since it is also the name of a
crucial function.
> Here's what I have
> cc<-list(INT=c("1","2","3"),NUM=c("2.34","4.56","6.78"))
> I need
> c<-list(INT=c(1,2,3),NUM=c(2.34,4.56,6.78))
> cc <- lapply(cc, as.numeric)
> cc
$INT
[1] 1 2 3
$NUM
[1] 2.34 4.56 6.78
--
David.
>
>
> On Sun, Sep 5, 2010 at 7:57 PM, David Winsemius <dwinsemius at comcast.net
> > wrote:
> So there is one item per line and the task is to recognize the
> strings "INT" and "NUM" and create variables with numeric type and
>
> INT=c(2,3,4)
> NUM=c(2.37, 4.56) # ???
>
> I worry that is not a full description of the task .... if there be
> more than just two variable names and if all the INTs have the same
> name, then they will get overwritten .... but perhaps you have
> specified the problem completely, so here goes:
>
> > txt <- textConnection('INT
>
> + "2"
> + "3"
> + "4"
> +
> + NUM
> + "2.37"
> + "4.56"')
> > indat <- read.table(txt, stringsAsFactors=FALSE)
>
> > indat$nflag <- as.numeric(indat$V1)
> > cumsum(is.na(indat$nflag))
> [1] 1 1 1 1 2 2 2
>
> > by(indat$V1, cumsum(is.na(indat$nflag)), function(x)
> assign(as.character(x[1]), as.numeric(x[-1]) ,envir = .GlobalEnv) )
> cumsum(is.na(indat$nflag)): 1
> [1] 1 3 4
> -------------------------------------------------------------
> cumsum(is.na(indat$nflag)): 2
> [1] 2 5
> > INT
> [1] 1 3 4
> > NUM
> [1] 2 5
> .
>
>
>
>
> On Sep 5, 2010, at 9:33 AM, rajesh j wrote:
>
> The string vector actually comes as a part of a list, and the vector
> is named "int", and the numbers are strings. I then have to make it
> a vector that is still called "int" and has 4,5,6 etc. the types are
> either integer or numeric. The number of items in the vector is
> unknown.
>
> here's an example,
>
> a list has vectors
>
> INT
> "2"
> "3"
> "4"
>
> NUM
> "2.37"
> "4.56"
>
>
>
> On Sun, Sep 5, 2010 at 6:56 PM, David Winsemius <dwinsemius at comcast.net
> > wrote:
>
> On Sep 5, 2010, at 9:22 AM, rajesh j wrote:
>
> for e.g., I get the following as a string vector
> "int" "4" "5" "6"
> after reading the first element, I have to convert this to a integer
> vector
>
> But what is the right answer? And what number of items are possble
> per line? And what are the other possible type identifiers? We need
> an example that has enough complexity to allow testing.
>
> --
> David.
>
>
>
> On Sun, Sep 5, 2010 at 6:44 PM, David Winsemius <dwinsemius at comcast.net
> > wrote:
>
> On Sep 5, 2010, at 8:48 AM, rajesh j wrote:
>
> Hi,
>
> Is it possible to convert a string vector to integer or numeric
> vector? In
> my situation I receive data in a string vector and have to convert
> it based
> on a given type.
>
> Can you give an example? I don't understand either what sort of
> conversion you desire or what you mean by "convert it based on a
> given type."
>
> There are a couple of function you may want to consider but I am
> having difficulty convincing myself they answer the problem posed:
>
> ?charToRaw
> ?stroi
>
> > strtoi(charToRaw("123 this is a string"), base=16) # convert to
> decimal ASCII
> [1] 49 50 51 32 116 104 105 115 32 105 115 32 97 32 115 116
> 114 105 110 103
>
> --
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list