Skip to content

more structure than 'str'?

4 messages · Charles C. Berry, Gabor Grothendieck, Spencer Graves

#
How can I see more of the structure than displayed by 'str'?  
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.
#
On Sun, 16 Dec 2007, Spencer Graves wrote:

            
str is generic.
[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:
List of 1
  $ a: num 1
  - attr(*, "row.names")= chr "b"
HTH,

Chuck
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
#
On Dec 16, 2007 9:44 PM, Spencer Graves <spencer.graves at pdf.com> wrote:
Try this:
structure(list(a = 1), .Names = "a", row.names = "b", class = "data.frame")
#
Hi, Gabor and Charles: 

      Thanks very much for two simple alternatives to 'str(obj)': 

            str(unclass(obj))
            dput(obj) 

      Best Wishes,
      Spencer
Gabor Grothendieck wrote: