[R] How to find out if a data frame has automatic row names?

Sarah Goslee sarah.goslee at gmail.com
Tue Dec 7 13:03:36 CET 2010


If as.matrix distinguishes between the two options, then you could look
at the code for that function and see how it's done.

Sarah

On Tue, Dec 7, 2010 at 6:34 AM, Andreas Borg
<andreas.borg at unimedizin-mainz.de> wrote:
> Hi all,
>
> I just stumbled across the difference between explicit and 'automatic' row
> names for data frames. Is there a quick way to find out if a data frame has
> automatic row names or not? Of course I know this for data frames that I
> create myself, but what if a function needs to extract this information for
> an argument?
>
> The following example shows that this property is not easily visible:
>
>> # data frame with automatic row names
>> df <- data.frame(a=1:2, b=3:4)
>> # data frame with explicit row names
>> df2 <- data.frame(a=1:2, b=3:4, row.names=1:2)
>> # printing does not reveal any difference
>> df
>  a b
> 1 1 3
> 2 2 4
>> df2
>  a b
> 1 1 3
> 2 2 4
>> # both are considered equal
>> all.equal(df, df2)
> [1] TRUE
>> identical(df, df2)
> [1] TRUE
>> # calling rownames gives the same result
>> rownames(df)
> [1] "1" "2"
>> rownames(df2)
> [1] "1" "2"
>> # when converting to a matrix, it makes a difference
>> as.matrix(df)
>    a b
> [1,] 1 3
> [2,] 2 4
>> as.matrix(df2)
>  a b
> 1 1 3
> 2 2 4
>
> Thanks for any suggestion,
>
> Andreas
>
> --
> Andreas Borg
> Medizinische Informatik
>
-- 
Sarah Goslee\
http://www.functionaldiversity.org



More information about the R-help mailing list