现代统计图形 - 科学网—博客
现代统计图形 - 科学网—博客
现代统计图形 - 科学网—博客
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
A.1 对象类型 159<br />
[21] plot.lda* plot.lm<br />
[23] plot.mca* plot.medpolish*<br />
[25] plot.mlm plot.ppr*<br />
[27] plot.prcomp* plot.princomp*<br />
[29] plot.profile* plot.profile.nls*<br />
[31] plot.ridgelm* plot.rpart*<br />
[33] plot.spec plot.spec.coherency<br />
[35] plot.spec.phase plot.spline*<br />
[37] plot.stepfun plot.stl*<br />
[39] plot.survfit* plot.table*<br />
[41] plot.ts plot.tskernel*<br />
[43] plot.xyVector*<br />
Non-visible functions are asterisked<br />
可以看出,这些函数都是以plot.*的形式定义的,其中*便是类的名<br />
称。泛型函数的基本原理就是:传给plot()的第一个参数是何种类,则调用<br />
何种函数进行作图。 例如iris的类是data.frame,那么plot(iris)就会调<br />
用plot.data.frame()作图(散点图矩阵)。下面的代码有助于进一步说明这种<br />
原理:<br />
1 > class(iris)<br />
[1] "data.frame"<br />
1 > plot(iris)<br />
2 > x = density(faithful$waiting)<br />
3 > class(x)<br />
[1] "density"<br />
1 > plot(x)<br />
我们也可以对现有的泛型函数进行扩充,使它们适应我们自定义的类。<br />
例如print()也是一个常用的泛型函数,当我们在R控制台中键入一个对象以<br />
显示其内容时,实际上是调用了该函数以打印出对象的内容。现在我们定<br />
义一个print.yihui(),使得类名称为yihui的对象在屏幕上打印出来时数值为<br />
真实数值的2倍:<br />
1 > # 本例告诉我们,眼见未必为实!<br />
2 > x = 1:5<br />
3 > class(x)