Tancred Frickey
2006-Mar-22 03:42 UTC
[R] converting a string to a vector without using strsplit and unlink?
Hi
I am importing some data from a postgres database and one of the fields
contains an array of values. This field is in the form "{1,2,3,4,5}"
and
is imported as a character string into "R". I am able to convert the
string into a vector of numerics using the strsplit and unlist
functions, but I find that a very inelegant (and slow) solution.
As an alternative I have coaxed the database into exporting the data in
the form "c(1,2,3,4,5)" and importing that into R. Unfortunately this
is
also interpreted as one long character string instead of a vector
containing values. If I edit the corresponding fields in the table with
the "edit" command and remove the quotes at the beginning and end of
the
line, the data is recognized as a vector of numerics.
Question: Is there any direct or easy way of converting a string
"c(1,2,3,4,5)" into a vector of values without going through
strsplit&unlist and/or is there a way to import arrays from postgres
directly as arrays or vectors and not strings (and thereby avoid all the
trouble in the first place).
Best wishes
Tancred
Gabor Grothendieck
2006-Mar-22 03:58 UTC
[R] converting a string to a vector without using strsplit and unlink?
Try this:
x <- "c(1,2)"
eval(parse(text = x))
or
x <- sub("\\{(.*)\\}", "c(\\1)", "{1,2,3,4,5}")
eval(parse(text = x))
or
scan(textConnection(gsub("[{}]", "",
"{1,2,3,4,5}")), sep = ",")
On 3/21/06, Tancred Frickey <tancred.frickey at rsbs.anu.edu.au>
wrote:> Hi
>
> I am importing some data from a postgres database and one of the fields
> contains an array of values. This field is in the form
"{1,2,3,4,5}" and
> is imported as a character string into "R". I am able to convert
the
> string into a vector of numerics using the strsplit and unlist
> functions, but I find that a very inelegant (and slow) solution.
> As an alternative I have coaxed the database into exporting the data in
> the form "c(1,2,3,4,5)" and importing that into R. Unfortunately
this is
> also interpreted as one long character string instead of a vector
> containing values. If I edit the corresponding fields in the table with
> the "edit" command and remove the quotes at the beginning and end
of the
> line, the data is recognized as a vector of numerics.
>
> Question: Is there any direct or easy way of converting a string
> "c(1,2,3,4,5)" into a vector of values without going through
> strsplit&unlist and/or is there a way to import arrays from postgres
> directly as arrays or vectors and not strings (and thereby avoid all the
> trouble in the first place).
>
>
> Best wishes
>
> Tancred
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html
>
Tancred Frickey
2006-Mar-22 04:00 UTC
[R] converting a string to a vector without using strsplit and unlink?
Many thanks. That does it Gabor Grothendieck wrote:>Try this: > >x <- "c(1,2)" >eval(parse(text = x)) > >or > >x <- sub("\\{(.*)\\}", "c(\\1)", "{1,2,3,4,5}") >eval(parse(text = x)) > >or > >scan(textConnection(gsub("[{}]", "", "{1,2,3,4,5}")), sep = ",") > >On 3/21/06, Tancred Frickey <tancred.frickey at rsbs.anu.edu.au> wrote: > > >>Hi >> >>I am importing some data from a postgres database and one of the fields >>contains an array of values. This field is in the form "{1,2,3,4,5}" and >>is imported as a character string into "R". I am able to convert the >>string into a vector of numerics using the strsplit and unlist >>functions, but I find that a very inelegant (and slow) solution. >>As an alternative I have coaxed the database into exporting the data in >>the form "c(1,2,3,4,5)" and importing that into R. Unfortunately this is >>also interpreted as one long character string instead of a vector >>containing values. If I edit the corresponding fields in the table with >>the "edit" command and remove the quotes at the beginning and end of the >>line, the data is recognized as a vector of numerics. >> >>Question: Is there any direct or easy way of converting a string >>"c(1,2,3,4,5)" into a vector of values without going through >>strsplit&unlist and/or is there a way to import arrays from postgres >>directly as arrays or vectors and not strings (and thereby avoid all the >>trouble in the first place). >> >> >>Best wishes >> >>Tancred >> >>______________________________________________ >>R-help at stat.math.ethz.ch mailing list >>https://stat.ethz.ch/mailman/listinfo/r-help >>PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html >> >> >>