On Sat, Aug 18, 2012 at 10:03 AM, Martin Maechler <maech...@stat.math.ethz.ch> wrote: > Today, I was looking for an elegant (and efficient) way > to get a named (atomic) vector by selecting one column of a data frame. > Of course, the vector names must be the rownames of the data frame. > > Ok, here is the quiz, I know one quite "cute"/"slick" answer, but was > wondering if there are obvious better ones, and > also if this should not become more idiomatic (hence "R-devel"): > > Consider this toy example, where the dataframe already has only > one column : > >> nv <- c(a=1, d=17, e=101); nv > a d e > 1 17 101 > >> df <- as.data.frame(cbind(VAR = nv)); df > VAR > a 1 > d 17 > e 101 > > Now how, can I get 'nv' back from 'df' ? I.e., how to get > >> identical(nv, .......) > [1] TRUE > > where ...... only uses 'df' (and no non-standard R packages)? > > As said, I know a simple solution (*), but I'm sure it is not > obvious to most R users and probably not even to the majority of > R-devel readers... OTOH, people like Bill Dunlap will not take > long to provide it or a better one.
But aren't you making life difficult for yourself by not using I ? df <- data.frame(VAR = I(nv)) str(df[[1]]) (which isn't quite identically because it now has the AsIs class) Hadley -- Assistant Professor Department of Statistics / Rice University http://had.co.nz/ ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel