[R] more structure than 'str'?

Charles C. Berry cberry at tajo.ucsd.edu
Mon Dec 17 04:08:00 CET 2007

On Sun, 16 Dec 2007, Spencer Graves wrote:

>      How can I see more of the structure than displayed by 'str'?

str is generic.

> methods(str)
[1] str.data.frame* str.default*    str.dendrogram* str.logLik*     str.POSIXt*

    Non-visible functions are asterisked

As you see there is a data.frame method that chooses not to report on the 
"row.names" attribute.

You can get the default behavior by removing the class attribute:

> str(unclass(tstDF))
List of 1
  $ a: num 1
  - attr(*, "row.names")= chr "b"



> Consider the following:
> tstDF <- data.frame(a=1, row.names='b')
> > str(tstDF)
> 'data.frame':   1 obs. of  1 variable:
> $ a: num 1
>      The object 'tstDF' has row.names, but I have to suspect they are
> there -- AND know a function like 'row.names' or 'dimnames' -- to see
> them.
>      I've found 'str' extremely valuable for understanding and
> explaining to others the internal structure of an R object.   In many
> cases, it has helped me find fairly simple ways to do things with R
> objects that might have been much more difficult and perhaps infeasible
> without 'str' -- and without access to the right expert, who may not be
> available in the time I have to solve a particular problem.
>      Thanks again to Martin Maechler, who wrote 'str', and to everyone
> else who has replied to questions from me over the years.
>      Best Wishes,
>      Spencer Graves
> p.s.  'methods(class="data.frame")' would help in this example.
> However, 'methods' won't always find all available and recommended
> extractor functions.  For example, 'methods(class="lm")' was not able to
> find 'AIC' for me just now.
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

Charles C. Berry                            (858) 534-2098
                                             Dept of Family/Preventive Medicine
E mailto:cberry at tajo.ucsd.edu	            UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/  La Jolla, San Diego 92093-0901

More information about the R-help mailing list