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