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.
more structure than 'str'?
4 messages · Charles C. Berry, Gabor Grothendieck, Spencer Graves
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 Graves
Try this:
dput(tstDF)
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:
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 Graves
Try this:
dput(tstDF)
structure(list(a = 1), .Names = "a", row.names = "b", class = "data.frame")