Today's class will attempt to uncover some of the basics of how S-plus recognizes the type of objects that it is dealing with. We shall concentrate primarily with the print, summary and plot functions.
You may have noticed that the plot, summary and print functions can deal with many different classes of objects and give appropriate output for the object class.
Explain the output from the commands:
> fit1
> print(fit1)
> summary(fit1)
> plot(fit1)
> x
> print(x)
> summary(x)
> plot(x)
What don't you like about the output from the plot, summary and print commands? How could it be improved? Keep a note of your comments, you will need to implement these improvements later.
Try these commands also:
> mode(fit1)
# Check the help file for mode
> class(fit1)
# Check the help file for class
> attributes(fit1) # Check
the help file for attributes
> mode(x)
> class(x)
> attributes(x)
What do these functions tell you
about the objects? What characteristics of these objects enables the functions
print,
summary and plot
to recognise the type of object that it is dealing with? Look up
the help files for print,
summary,
and plot
for some ideas. It might not be a bad idea to look at all the S-plus functions
that start with the words print,
summary
and plot.
Where does S-plus store its basic functions? (?search,
?ls and ?objects)
Problem 2
You can now try and really confuse S-plus, and maybe yourself as well!
First, create a (20 x 2) dimensional matrix M whose elements are from a Binomial(5,0.62) distribution (?rbinom). Make a data frame DF that has the same terms as M (?as.data.frame). Plot both of these objects. Did you get the same result? Check the class of M, did you get anything surprising? How did the plot function recognize that M was a matrix? It might be worth looking at the help for plot.matrix. Can you change the class of M so that you get the same plot as for DF? Can you get this same plot without changing the class of M? Is there a class "matrix"? Have you any ideas what it is used for? (Hint look at the built in S-plus library contents)
Problem 3 (Hand in the S-plus code and a sample output for this question)
By now you should have worked out how the print,
summary
and plot commands
recognize the type of object that it is dealing with. You should also have
found some improvements that you would like to make to these functions.
Choose an object class ("lm", "aov", "princomp",
"data.frame", "list" for example) and improve the operation
of the print,
summary
and plot commands
for this class of variables.
Problem 4 (If you have time! Please had in the code and a sample output for this question)
Some miscellaneous things to keep you occupied.
Can an object have more than one class? (Hint: Create data for an analysis of variance problem, and do the analysis of variance.) What is the effect of having more than one class? Create your own class of objects (Alternatively, create a new class type, for a type of S-plus object that does not have a class). Write suitable functions for dealing with the class of objects (in particular print, summary and plot). Make your function robust to receiving the wrong type of object.