02.07.2013 Views

现代统计图形 - 科学网—博客

现代统计图形 - 科学网—博客

现代统计图形 - 科学网—博客

SHOW MORE
SHOW LESS

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)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!