R语言面向对象编程:S3和R6
2017-06-10
0
R语言面向对象编程:S3和R6
一、基于S3的面向对象编程
基于S3的面向对象编程是一种基于泛型函数(generic function)的实现方式。
1.S3函数的创建
S3对象组成:generic(generic FUN)+method(generic.class FUN)
泛型函数(generic)创建示例:
get_n_elements
{
UseMethod("get_n_elements")
}
通常用UseMethod()函数定义一个泛型函数的名称,通过传入参数的class属性,来确定对应的方法调用。
method(generic.class)函数,创建示例:
# Create a data.frame method for get_n_elements
get_n_elements.data.frame
{
nrow(x) * ncol(x) # or prod(dim(x))
}
# Create a default method for get_n_elements
#在使用UseMethod调用时,先在methods中寻找对应class,如果都没有找到,则会调用#default方法。
get_n_elements.default
{
length(unlist(x))
}
methods() 用于查找S3泛型函数中所有可用的methods。
调用pryr包中的is_s3_method() 可以验证函数是否S3方法。
2、S3对象的传入参数有多个class属性的处理方法
当变量x具有多个class属性,应按具体到通用的顺序来排列变量对应的class。
使用NextMethod()来调用methods
an_s3_method.some_class
{