Re: [Rd] Quiz: How to get a "named column" from a data frame

From: Martin Maechler <>
Date: Sat, 18 Aug 2012 18:33:36 +0200

>>>>> Joshua Ulrich <> >>>>> on Sat, 18 Aug 2012 10:16:09 -0500 writes:

    > I don't know if this is better, but it's the most obvious/shortest I
    > could come up with.  Transpose the data.frame column to a 'row' vector
    > and drop the dimensions.

    R> identical(nv, drop(t(df)))
    > [1] TRUE Yes, that's definitely shorter,

One gotta is that I'd want a solution that also works when the df has more columns than just one...

Your idea to use t(.) is nice and "perfect" insofar as it coerces the data frame to a matrix, and that's really the clue:

Where as df[,1] is losing the names, the matrix indexing is not.
So your solution can be changed into


which is even shorter...
and slightly less efficient, at least conceptually, than mine, which has been


Now, the remaining question is: Shouldn't there be something more natural to achieve that?
(There is not, currently, AFAIK).


    > Best,
    > --
    > Joshua Ulrich  |
    > FOSS Trading  |

    > On Sat, Aug 18, 2012 at 10:03 AM, Martin Maechler
    > <> 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 <- = 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.
>> (*) In my solution, the above '.......' consists of 17 letters.
>> I'll post it later today (CEST time) ... or confirm
>> that someone else has done so.
>> Martin
>> ______________________________________________
>> mailing list
>> mailing list Received on Sat 18 Aug 2012 - 17:12:47 GMT

This quarter's messages: by month, or sorted: [ by date ] [ by thread ] [ by subject ] [ by author ]

All messages

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 22 Aug 2012 - 14:30:40 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.

list of date sections of archive