R手册(Common)--面向对象(R6 and S4)

R 主要面向统计计算,似乎很少会用到面向对象的编程方法。但在统计计算中,在下列情形中使用面向对象的编程方法可以编程更有效率。

面向对象R6类

R 的面向对象 (OOP) 是基于泛型函数 (generic function) 的,而不是基于类层次结构

library(R6)

# 创建R6类
R6Class(classname = NULL, public = list(), private = NULL,active = NULL, inherit = NULL, lock = TRUE, class = TRUE,portable = TRUE, parent_env = parent.frame())

参数列表:

classname:定义类名。
public:定义公有成员,包括公有方法和属性。
privat:定义私有成员,包括私有方法和属性。
active :主动绑定的函数列表。
inherit:定义父类,继承关系。
lock:是否上锁,如果上锁则用于类变量存储的环境空间被锁定
class:是否把属性封装成对象,默认是封装,如果选择不封装,类中属性存存在一个环境空间中。
portable:是否为可移植类型,默认是可移植型类,类中成员访问需要用调用self和private对象。
parent_env:定义对象的父环境空间。

`$new()` # 实例化函数
`$set()` # R6类的动态绑定
`print()` # 输出R6默认方法

面向对象S4类

自定义S4类

myClass <-setClass(Class, slots=list(),prototype,contains=character(), validity) ) 

属性用@访问

参数列表

Class: 定义类名
slots: 定义属性和属性类型,列表
prototype: 定义属性的默认值
contains: 定义父类,继承关系
validity: 定义属性的类型检查

实例化函数

new(Class,...)

S4的泛型函数

  • 通过setGeneric()来定义接口
setGeneric(name,def)
    # def指定了形式参数,并成为默认方法。
    # name通用函数的字符串名称
  • 通过setMethod()来定义现实类
setMethod(f,signature=character(),definition)
    # f:通用函数的字符串名称
    # signature:一些参数需要的类
    # definition:一个定义的函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值