John C Nash
2012-Mar-01 20:28 UTC
[R] Converting a string vector with names to a numeric vector with names
Not paying close attention to detail, I entered the equivalent of pstr<-c("b1=200", "b2=50", "b3=0.3") when what I wanted was pnum<-c(b1=200, b2=50, b3=0.3) There was a list thread in 2010 that shows how to deal with un-named vectors, but the same lapply solution doesn't seem to work here i.e., pnum<-lapply(pstr, as.numeric) or similar vapply version. The names and = signs seem to mess things up. This is clearly not critical, but it would be nice to know an appropriate transformation. JN
Peter Langfelder
2012-Mar-01 21:25 UTC
[R] Converting a string vector with names to a numeric vector with names
On Thu, Mar 1, 2012 at 12:28 PM, John C Nash <nashjc at uottawa.ca> wrote:> Not paying close attention to detail, I entered the equivalent of > > pstr<-c("b1=200", "b2=50", "b3=0.3") > > when what I wanted was > > pnum<-c(b1=200, b2=50, b3=0.3) > > There was a list thread in 2010 that shows how to deal with un-named vectors, but the same > lapply solution doesn't seem to work here i.e., > > pnum<-lapply(pstr, as.numeric) > > or similar vapply version. The names and = signs seem to mess things up. > > This is clearly not critical, but it would be nice to know an appropriate transformation.Here's one: split = sapply(strsplit(pstr, split = "="), I); pnum = as.numeric(split[2, ]); names(pnum) = split[1, ];> pnumb1 b2 b3 200.0 50.0 0.3 HTH Peter
Petr Savicky
2012-Mar-01 21:32 UTC
[R] Converting a string vector with names to a numeric vector with names
On Thu, Mar 01, 2012 at 03:28:31PM -0500, John C Nash wrote:> Not paying close attention to detail, I entered the equivalent of > > pstr<-c("b1=200", "b2=50", "b3=0.3") > > when what I wanted was > > pnum<-c(b1=200, b2=50, b3=0.3) > > There was a list thread in 2010 that shows how to deal with un-named vectors, but the same > lapply solution doesn't seem to work here i.e., > > pnum<-lapply(pstr, as.numeric) > > or similar vapply version. The names and = signs seem to mess things up. > > This is clearly not critical, but it would be nice to know an appropriate transformation.Hi. Try the following. mat <- sapply(strsplit(pstr, "="), identity) x <- as.numeric(mat[2, ]) names(x) <- mat[1, ] x b1 b2 b3 200.0 50.0 0.3 Hope this helps. Petr Savicky.
John C Nash
2012-Mar-01 21:36 UTC
[R] Converting a string vector with names to a numeric vector with names
Gotta love R. Thanks to Bill Dunlap, Peter Langfelder and Jim Holtman for no less than 3 different solutions. JN On 12-03-01 04:25 PM, Peter Langfelder wrote:> pstr<-c("b1=200", "b2=50", "b3=0.3")> split = sapply(strsplit(pstr, split = "="), I); > > pnum = as.numeric(split[2, ]); > names(pnum) = split[1, ]; >