R语言简介 R语言笔记数据分析与绘图的编程环境 R Development Core Team June10.2006
R语言简介 R语言笔记:数据分析与绘图的编程环境 版本1.7 R Development Core Team June 10, 2006
Contents 1绪论与基础 1.1R语言环境 1 12相关的软件和文档 1.3R与统计 1.4R与视窗系统 .5R的交互使用 16入门训练 17获取函数和功能的帮助信息 18R的命令、对大小写的敏感,等等 19对已输入命令的记忆和更改 122233344 10命令文件的执行和输出的转向到文件 1.11数据的保持与对象的清除 2简单操作;数值与向量 2.1向量与赋值 2.2向量运算 23产生规则的序列 24逻辑向量 2.5缺失值 2.6字符向量 27索引向量( index vector);数据集子集的选择与修改 28对象的其他类型 5556777890 3对象,模式和属性 3.1固有属性:模式和长度 10 32改变对象的长度 11 33属性的获取和设置 11 34对象的类别 4有序因子与无序因子 41一个特例 42函数 tapply0与 ragged数组 22 43有序因子 5数组和矩阵 14 5.2数组的索引和数组的子块 14 5.3索引数组
Contents 1 绪论与基础 1 1.1 R语言环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 相关的软件和文档 . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 R与统计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4 R与视窗系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.5 R的交互使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.6 入门训练 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.7 获取函数和功能的帮助信息 . . . . . . . . . . . . . . . . . . . . . 3 1.8 R的命令、对大小写的敏感,等等 . . . . . . . . . . . . . . . . . . 3 1.9 对已输入命令的记忆和更改 . . . . . . . . . . . . . . . . . . . . . 4 1.10 命令文件的执行和输出的转向到文件 . . . . . . . . . . . . . . . . 4 1.11 数据的保持与对象的清除 . . . . . . . . . . . . . . . . . . . . . . 4 2 简单操作;数值与向量 5 2.1 向量与赋值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 向量运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3 产生规则的序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.4 逻辑向量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.5 缺失值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.6 字符向量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.7 索引向量(index vector);数据集子集的选择与修改 . . . . . . . . . 8 2.8 对象的其他类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3 对象,模式和属性 10 3.1 固有属性:模式和长度 . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2 改变对象的长度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3 属性的获取和设置 . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.4 对象的类别 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4 有序因子与无序因子 12 4.1 一个特例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.2 函数tapply()与ragged数组 . . . . . . . . . . . . . . . . . . . . . . 12 4.3 有序因子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5 数组和矩阵 14 5.1 数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.2 数组的索引和数组的子块 . . . . . . . . . . . . . . . . . . . . . . 14 5.3 索引数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 i
CONTENTS 54函数 array 5.4.1向量,数组的混合运算,重复使用规则 5.5两个数组的外积 5.6数组的广义转置 57专门的矩阵功能 5.71矩阵乘法 572线性方程和矩阵的逆 5.7.3特征值和特征向量 58奇异值分解与行列式 6778889999 59最小二乘拟合及QR分解 5.10构建分区矩阵, cindy和 rbind(O 511连接函数c(,针对数组的应用 512由因子生成频数表 6列表和数据帧 21 62构建和修改列表 6.2.1连接列表 6.3数据帧 6.3.1创建数据帧 632 attach与 detach 22223 6.3.3使用数据帧 6.34挂接任意列表 6.3.5管理搜索路径 7从文件中读取数据 71函数 read table 72函数scan( 7.3内建数据集的存取 7.3.1从其他R功能包中载入数据 7.4编辑数据 8概率分布 8.1R一作为一个统计表的集合 8.2检测数据集合的分布 8.3单样本和两样本检验 292 9语句组、循环和条件操作 9.1表达式语句组 9.2控制语句 9.21条件执行:ii语句 9.2.2重复执行:for循环, repeat和 while 10编写自己的函数 10.1简单示例 10.2定义新的二元操作符 10.3指定的参数和默认值 10.4参数 10.5函数内的赋值 10.6更多高级示例
CONTENTS ii 5.4 函数array() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.4.1 向量,数组的混合运算,重复使用规则 . . . . . . . . . . . 16 5.5 两个数组的外积 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.6 数组的广义转置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.7 专门的矩阵功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5.7.1 矩阵乘法 . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5.7.2 线性方程和矩阵的逆 . . . . . . . . . . . . . . . . . . . . . 18 5.7.3 特征值和特征向量 . . . . . . . . . . . . . . . . . . . . . . 19 5.8 奇异值分解与行列式 . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.9 最小二乘拟合及QR分解 . . . . . . . . . . . . . . . . . . . . . . . 19 5.10 构建分区矩阵,cbind()和rbind() . . . . . . . . . . . . . . . . . . 19 5.11 连接函数c(),针对数组的应用 . . . . . . . . . . . . . . . . . . . . 19 5.12 由因子生成频数表 . . . . . . . . . . . . . . . . . . . . . . . . . . 20 6 列表和数据帧 21 6.1 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6.2 构建和修改列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.2.1 连接列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.3 数据帧 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.3.1 创建数据帧 . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.3.2 attach()与detach() . . . . . . . . . . . . . . . . . . . . . . 23 6.3.3 使用数据帧 . . . . . . . . . . . . . . . . . . . . . . . . . . 23 6.3.4 挂接任意列表 . . . . . . . . . . . . . . . . . . . . . . . . . 24 6.3.5 管理搜索路径 . . . . . . . . . . . . . . . . . . . . . . . . . 24 7 从文件中读取数据 25 7.1 函数read.table() . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 7.2 函数scan() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 7.3 内建数据集的存取 . . . . . . . . . . . . . . . . . . . . . . . . . . 26 7.3.1 从其他R功能包中载入数据 . . . . . . . . . . . . . . . . . 27 7.4 编辑数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 8 概率分布 28 8.1 R—作为一个统计表的集合 . . . . . . . . . . . . . . . . . . . . . . 28 8.2 检测数据集合的分布 . . . . . . . . . . . . . . . . . . . . . . . . . 29 8.3 单样本和两样本检验 . . . . . . . . . . . . . . . . . . . . . . . . . 32 9 语句组、循环和条件操作 35 9.1 表达式语句组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 9.2 控制语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 9.2.1 条件执行:if语句 . . . . . . . . . . . . . . . . . . . . . . . 35 9.2.2 重复执行:for 循环,repeat 和while . . . . . . . . . . . . 35 10 编写自己的函数 37 10.1 简单示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 10.2 定义新的二元操作符 . . . . . . . . . . . . . . . . . . . . . . . . . 38 10.3 指定的参数和默认值 . . . . . . . . . . . . . . . . . . . . . . . . . 38 10.4 参数’...’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 10.5 函数内的赋值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 10.6 更多高级示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
CONTENTS 10.6.1区组设计的效率因子( Efficiency factors) 10.6.2删除打引数组中的所有名称 10.6.3递归的数值积分 9⑩牡43 10.8定制环境 109类别,通用函数和对象定位 11R的统计模型 11.1定义统计模型;公式 45 1111对比( contrast 11.2线性模型 11.3用于释放模型信息的通用函数 114方差分析与模型比较 1141方差分析表( ANOVA tables) 49 11.5更新拟合模型 50 11.6广义线性模型 1.6.1族 (families) 51 11.6.2函数gm( 11.7非线性最小二乘和最大似然模型 11.7.1最小二乘 11.72最大似然 11.8一些非标准的模型 12图形过程 121高级绘图命令 21.1函数 plot 2.1.2显示多元数据 121.3显示图形 121.4高级绘图函数的参数 122低级绘图命令 221数学注释 22.2 Hershey矢量字体 123图形的交互 124使用图形参数 241持续性变更( Permanent changes):parO函数 1242临时性变更:图形函数的参数 125图形参数列表 125.1图形元素 1252坐标轴和标记 253图边缘( Figure margins). 125.4多图环境 80111228%%6667⑦ 12.6设备驱动 126.1文本文档的 PostScript.图表 126.2多重图形设备 127动态图形
CONTENTS iii 10.6.1 区组设计的效率因子(Efficiency factors) . . . . . . . . . . 39 10.6.2 删除打引数组中的所有名称 . . . . . . . . . . . . . . . . . 40 10.6.3 递归的数值积分 . . . . . . . . . . . . . . . . . . . . . . . 41 10.7 范畴(scope) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 10.8 定制环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 10.9 类别,通用函数和对象定位 . . . . . . . . . . . . . . . . . . . . . 44 11 R的统计模型 45 11.1 定义统计模型;公式 . . . . . . . . . . . . . . . . . . . . . . . . . 45 11.1.1 对比(contrasts) . . . . . . . . . . . . . . . . . . . . . . . . 48 11.2 线性模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 11.3 用于释放模型信息的通用函数 . . . . . . . . . . . . . . . . . . . . 48 11.4 方差分析与模型比较 . . . . . . . . . . . . . . . . . . . . . . . . . 49 11.4.1 方差分析表(ANOVA tables) . . . . . . . . . . . . . . . . . 49 11.5 更新拟合模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 11.6 广义线性模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 11.6.1 族(families) . . . . . . . . . . . . . . . . . . . . . . . . . . 51 11.6.2 函数glm() . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 11.7 非线性最小二乘和最大似然模型 . . . . . . . . . . . . . . . . . . . 53 11.7.1 最小二乘 . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 11.7.2 最大似然 . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 11.8 一些非标准的模型 . . . . . . . . . . . . . . . . . . . . . . . . . . 55 12 图形过程 56 12.1 高级绘图命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 12.1.1 函数plot() . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 12.1.2 显示多元数据 . . . . . . . . . . . . . . . . . . . . . . . . . 57 12.1.3 显示图形 . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 12.1.4 高级绘图函数的参数 . . . . . . . . . . . . . . . . . . . . . 58 12.2 低级绘图命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 12.2.1 数学注释 . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 12.2.2 Hershey 矢量字体 . . . . . . . . . . . . . . . . . . . . . . 61 12.3 图形的交互 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 12.4 使用图形参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 12.4.1 持续性变更(Permanent changes): par()函数 . . . . . . . . 62 12.4.2 临时性变更:图形函数的参数 . . . . . . . . . . . . . . . . 63 12.5 图形参数列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 12.5.1 图形元素 . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 12.5.2 坐标轴和标记 . . . . . . . . . . . . . . . . . . . . . . . . . 64 12.5.3 图边缘(Figure margins) . . . . . . . . . . . . . . . . . . . 65 12.5.4 多图环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 12.6 设备驱动 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 12.6.1 文本文档的PostScript图表 . . . . . . . . . . . . . . . . . . 67 12.6.2 多重图形设备 . . . . . . . . . . . . . . . . . . . . . . . . . 67 12.7 动态图形 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Chapter 1 绪论与基础 11R语言环境 R是一套由数据操作、计算和图形展示功能整合而成的套件。包括: 有效的数据存储和处理功能, 一套完整的数组(特别是矩阵)计算操作符 拥有完整体系的数据分析工具, 为数据分析和显示提供的强大图形功能 一套(源自S语言)完善、简单、有效的编程语言(包括条件、循环、自 定义函数、输入输出功能)。 在这里使用”环境”( environment)是为了说明R的定位是一个完善、统一的系 统,而非其他数据分析软件那样作为一个专门、不灵活的附属工具 R很适合被用于发展中的新方法所进行的交互式数据分析。由于R是一个动 态的环境,所以新发布的版本并不总是与之前发布的版本完全兼容。某些用户 欢迎这些变化因为新技术和新方法的所带来的好处;有些则会担心旧的代码不 再可用。尽管R试图成为一种真正的编程语言,但是大家不要认为一个由R编写 的程序可以长命百岁。 12相关的软件和文档 R可以被当作S语言(由 Rick becker, John Chambers和 Allan wilks在Bel实验室 开发)的实现工具,或者S-PLUs系统的基本形态。 S语言的发展变化可以参考 JOHN CHAMBERS与其他人合作的四本书。 对R来说基本的参考书是 The New s language: A Programming Environment for Data Analysis and Graphics (Richard A. Becker, John M. Chambers and Allan R.Wiks)。对于1991年发布的S( S VERSION3)可以参考 Statistical Models in s( edited by John n. Chambers and Trevor J. Hastie)。更多的参 考书目请查看本手册的相应部分。 此外,S-PLUs的相关文档都可以用于R,只是要注意R与S执行工具之间的 差别
Chapter 1 绪论与基础 1.1 R语言环境 R是一套由数据操作、计算和图形展示功能整合而成的套件。包括: • 有效的数据存储和处理功能, • 一套完整的数组(特别是矩阵)计算操作符, • 拥有完整体系的数据分析工具, • 为数据分析和显示提供的强大图形功能, • 一套(源自S语言)完善、简单、有效的编程语言(包括条件、循环、自 定义函数、输入输出功能)。 在这里使用”环境”(environment)是为了说明R的定位是一个完善、统一的系 统,而非其他数据分析软件那样作为一个专门、不灵活的附属工具。 R很适合被用于发展中的新方法所进行的交互式数据分析。由于R是一个动 态的环境,所以新发布的版本并不总是与之前发布的版本完全兼容。某些用户 欢迎这些变化因为新技术和新方法的所带来的好处;有些则会担心旧的代码不 再可用。尽管R试图成为一种真正的编程语言,但是大家不要认为一个由R编写 的程序可以长命百岁。 1.2 相关的软件和文档 R可以被当作S语言(由Rick Becker,John Chambers和AllanWilks在Bell实验室 开发)的实现工具,或者S-Plus系统的基本形态。 S语言的发展变化可以参考John Chambers与其他人合作的四本书。 对R来说,基本的参考书是The New S Language: A Programming Environment for Data Analysis and Graphics(Richard A. Becker, John M. Chambers and Allan R. Wilks)。 对于1991年发布的S (S version 3)可以参考Statistical Models in S (edited by John M. Chambers and Trevor J. Hastie)。更多的参 考书目请查看本手册的相应部分。 此外,S-Plus的相关文档都可以用于R,只是要注意R与S执行工具之间的 差别。 1