R:S3类泛型函数
(本文参考R语言编程艺术,例子也是该书上的)
R中原始的类结构,就是S3类。其实,R中大多数内置类都是S3类。一个S3类包含一个 列表,再附加一个类名属性和调度的功能。说白了,就是R具有多态性,同一个函数针对不同的函数类型,可以调动不同的操作。也就是不同的类使用统一的接口。常用的泛型函数有plot()、print()等。现以print()来说明:
function (x, ...)
UseMethod("print")
<bytecode: 0x0000000007278520>
<environment: namespace:base>
你会发现print()函数仅仅由一个UseMethod()的调用构成,实际上,这只是一个调用函数,因此,将print()视为一个泛型型函数,也就无可或非啦。
编写S3类
可以赋予一个S3类不同的输出类型,如下代码
> j<-list(name="Joe",salary=55000,union=T)
> j
$name
[1] "Joe"
$salary
[1] 55000
$union
[1]