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

Peter Ehlers ehlers at ucalgary.ca
Tue Dec 7 13:26:07 CET 2010


On 2010-12-07 03:34, Andreas Borg 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,
>

Check ?.row_names_info

Peter Ehlers

> Andreas
>



More information about the R-help mailing list