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 >> >> >>