R语言 S4系统

R语言 S4系统

如不了解S3系统,请先看S3教程

S4的动机

为了解决S3的问题,S4专注于更加正式的面向对象。
显著的概念上的优势(conceptual advantages),但是性能有所下降。
使用了正式的继承系统(inheritance)。

1. 声明新类

每个类有许多槽(slots),每个槽都有特定的类型或者类(class)。
通过setClass()语句声明一个新类:

setClass("coords", 
	slots = c(x = "numeric", y = "numeric"))

2. 构造对象(construct)

2.1 创建对象

有了一个类,用new()创建一个这个类的对象.
声明类名,再提供slot的参数

pts <- new("coords", x = rnorm(5), y = rnorm(5))

2.2 构造函数

使用new()并不是很理想,而构造函数(constructor function)能对slots进行有效性检查

coords <- function(x, y) {
   
	# 有效性检查(validity check)
	if (length(x) != length(y)) stop("equal length x and y required")
	if (!is.numeric(x) || !is.numeric(y)) stop("numeric x and y required")
	new("coords", x = as.vector(x), y = as.vector(y))
}

# 这时再用构造函数构造一个实例(instance)
pts <- coords(round(rnorm(5), 2), round(rnorm(5), 2))
# 此时就已经可以打印了,如下
> pts

An object of class "coords"
Slot "x":
[1] 1.57 1.56 -1.68 -0.97 0.65
Slot "y":
[1] -0.31 1.30 -0.03 1.02 -1.92

3. 访问与提取(access)

3.1 访问操作符

@对slots的值进行访问操作(access operator)

> pts@x
[1] 1.57 1.56 -1.68 -0.97 0.65

3.2 访问函数

@过多地揭示了(reveal)类的内部结构,
而应该构造一个访问函数(访问器,accessor function),
可以更轻松地更改类的内部结构

xcoords <- function(obj) obj@x

4. 泛型(generic)

4.1 针对已有泛函,定义泛型方法

与S3不同的是,S3的方法分派取决于潜在的多个指定参数的类,而S4不只局限于一个,
指定参数的类型定义了方法的签名(signature)。
特殊类名ANY匹配所有类,但是优先级最低(prec

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
313页高清扫描版全 本书的内容来自作者使用R语言的实践经验总结,以R语言的高级编程为主,辅以跨界知识的综合运用,涉及计算机、统计、数学、金融四个学科的知识。书中首先阐释如何用R语言实现数学计算和创建模型,涉及协同过滤算法、基于矩阵的PageRank算法、遗传算法和金融交易策略模型。其次详细介绍了R语言的环境空间、文件系统管理以及S3、S4、RC和R6四种面向对象的程序设计。最后介绍完整的R包开发流程,并提供每日中国天气的应用案例和游戏开发的案例,帮助读者创建自己的R包,打开R语言产品化的思路。书中介绍了多个场景案例,不仅从学术的角度完成了模型设计,而且用计算机的方法实现产品。通过案例的学习,不同学科背景的R语言使用者可以站在别人的角度,找到新的思维方法。 本书首先介绍了R的工具包、时间序列包和性能监控包;然后阐述R语言与其他编程语言的通信,以及R语言作为服务器的应用;最后阐释R语言与各种数据库的通信以及R语言如何与Hadoop集成。附录介绍了Java、各种数据库以及Hadoop的安装方式。书中内容涉及计算机、互联网、数据库、大数据、统计、金融等领域,详细总结了R语言在实际使用时与Java、MySQL、Redis、MongoDB、Cassandra、Hadoop、Hive、HBase等技术综合运用的解决方案,具有实战性及可操作性强等特点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值