R语言面向对象

Python017

R语言面向对象,第1张

对事物越了解,就能够越好的驾驭这种事物。

R语言有四种面向对象的系统,一般而言,使用其中最简单的一种就已经足够了。

本文介绍S3,和S4的使用

S3是R中第一个,也是最简单的oo系统,S3不是非常正式,但是其保有一种极简主义的优雅.

在R语言当中,遇到的大多是情况是S3对象,但是R基础包中没有一个方法检验对象是不是S3对象,但是有一个简单的方法检验是不是S3对象 is.object(x)&!isS4(x)

另外一个方法是 pryr::otype()

在S3中,方法称之为泛型函数,S3的方法不属于对象和类。

S3是一个很简单的系统;他没有正式的类定义。为给一个类创建一个对象实例,只需要使用已经有的基础对象并且为对象设置类属性。

使用 structure 创建类对象,或者最后使用 class<–()

大多数S3提供了一个构造函数

构造函数的名字应该和类的名字相同。

为了添加一个新的泛型函数,创建一个调用 UseMethod 的函数。其有两个参数:泛型函数的名字和方法派送的参数:

首先我有一个函数 f

然后就可以写一个类的方法: (generic.class) , f 是函数名, B 是我定义的一个类

注意,这里用到了 f.B .所以在创建函数的时候不建议使用 . 。

在S3中,可以使用类属性设置将任意的对象转变成为一个特定的类对象。

S4则是更严格:必须使用 setClass 来定义类,使用 new() 来创建一个新对象.

S4有一个注意点

下面创建类,并进行继承

setGeneric 可以创建一个新的泛型函数或者将已经有的函数转换成为泛型函数。

setMethod 的参数包括:泛型函数的名字,与该方法关联起来的类,执行方法的函数。例如,将只能用于向量上的 union 应用与数据框上

R 语言,一种自由软件编程语言与操作环境,主要用于统计分析、绘图、数据挖掘。R 本来是由来自新西兰奥克兰大学的罗斯·伊哈卡和罗伯特·杰特曼开发,现在由“R 开发核心团队”负责开发。R 基于 S 语言的一个 GNU 计划项目,所以也可以当作 S 语言的一种实现,通常用 S 语言编写的代码都可以不作修改的在 R 环境下运行。

R 语言

R 的源代码可自由下载使用,亦有已编译的可执行文件版本可以下载,可在多种平台下运行,包括 UNIX(也包括 FreeBSD 和 Linux)、Windows 和 MacOS。R 主要是以命令行操作,同时有人开发了几种图形用户界面,其中 RStudio 是最为广泛使用的集成开发环境。

功能

R 内置多种统计学及数字分析功能。R 的功能也可以透过安装包(Packages,用户撰写的功能)增强。因为 S 的血缘,R 比其他统计学或数学专用的编程语言有更强的面向对象(面向对象程序设计, S3, S4 等)功能。

R 的另一强项是绘图功能,制图具有印刷的素质,也可加入数学符号。

虽然 R 主要用于统计分析或者开发统计相关的软件,但也有人用作矩阵计算。其分析速度可媲美专用于矩阵计算的自由软件 GNU Octave 和商业软件 MATLAB。