1.5批处理 15 1.4.4包的使用方法 载入一个包之后,就可以使用一系列新的函数和数据集了。包中往往提供了演示性的小型数 据集和示例代码,能够让我们尝试这些新功能。帮助系统包含了每个函数的一个描述(同时带有 示例),每个数据集的信息也被包括其中。命令help(package="package_name")可以输出某 个包的简短描述以及包中的函数名称和数据集名称的列表。使用函数he1p()可以查看其中任意 函数或数据集的更多细节。这些信息也能以PDF帮助手册的形式从CRAN下载。 R语言编程中的常见错误 有一些错误是R的初学者和经验丰富的R程序员都可能常犯的。如果程序出错了,请检查 以下几方面。 口使用了错误的大小写。help()、Help()和HELP()是三个不同的函数(只有第一个 是正确的)。 口忘记使用必要的引号。instal1.packages("gclus")能够正常执行,然而Ins- tal1.packages(gclus)将会报错。 口在函数调用时忘记使用括号。例如,要使用help()而非help。即使函数无需参数, 仍需加上()。 口在Windows上,路径名中使用了\。R将反斜杠视为一个转义字符。setwd("c:\ mydata")会报错。正确的写法是setwd("c:/mydata")或setwd("c:\mydata")。 口使用了一个尚未载入包中的函数。函数order.clusters()包含在包gclus中。如 果还没有载入这个包就使用它,将会报错。 R的报错信息可能是含义模糊的,但如果谨慎遵守了以上要,点,就应该可以避免许多错误。 1.5 批处理 多数情况下,我们都会交互式地使用R:在提示符后输入命令,接着等待该命令的输出结果。 偶尔,我们可能想要以一种重复的、标准化的、无人值守的方式执行某个R程序,例如,你可能 需要每个月生成一次相同的报告,这时就可以在R中编写程序,在批处理模式下执行它。 如何以批处理模式运行R与使用的操作系统有关。在Linux或Mac OS X系统下,可以在终端 窗口中使用如下命令: R CMD BATCH options infile outfile 其中infile是包含了要执行的R代码所在文件的文件名,outfile是接收输出文件的文件名, options部分则列出了控制执行细节的选项。依照惯例,infilel的扩展名是.R,outfilel的扩 展名为.Rout。 对于Windows,则需使用: "C:\Program Files\R\R-2.13.0\bin\R.exe"CMD BATCH --vanilla --slave "c:\my projects\myscript.R" 图灵社区会员matrixvirus(matrixvirus@163.com))专享尊重版权
1.5 批处理 15 1 2 3 4 5 16 6 7 8 9 10 11 12 13 14 15 1.4.4 包的使用方法 载入一个包之后,就可以使用一系列新的函数和数据集了。包中往往提供了演示性的小型数 据集和示例代码,能够让我们尝试这些新功能。帮助系统包含了每个函数的一个描述(同时带有 示例),每个数据集的信息也被包括其中。命令help(package="package_name")可以输出某 个包的简短描述以及包中的函数名称和数据集名称的列表。使用函数help()可以查看其中任意 函数或数据集的更多细节。这些信息也能以PDF帮助手册的形式从CRAN下载。 R语言编程中的常见错误 有一些错误是R的初学者和经验丰富的R程序员都可能常犯的。如果程序出错了,请检查 以下几方面。 使用了错误的大小写。help()、Help()和HELP()是三个不同的函数(只有第一个 是正确的)。 忘记使用必要的引号。install.packages("gclus")能够正常执行,然而Install.packages(gclus)将会报错。 在函数调用时忘记使用括号。例如,要使用help()而非help。即使函数无需参数, 仍需加上()。 在Windows上,路径名中使用了\。R将反斜杠视为一个转义字符。setwd("c:\ mydata")会报错。正确的写法是setwd("c:/mydata")或setwd("c:\\mydata")。 使用了一个尚未载入包中的函数。函数order.clusters()包含在包gclus中。如 果还没有载入这个包就使用它,将会报错。 R的报错信息可能是含义模糊的,但如果谨慎遵守了以上要点,就应该可以避免许多错误。 1.5 批处理 多数情况下,我们都会交互式地使用R:在提示符后输入命令,接着等待该命令的输出结果。 偶尔,我们可能想要以一种重复的、标准化的、无人值守的方式执行某个R程序,例如,你可能 需要每个月生成一次相同的报告,这时就可以在R中编写程序,在批处理模式下执行它。 如何以批处理模式运行R与使用的操作系统有关。在Linux或Mac OS X系统下,可以在终端 窗口中使用如下命令: 其中infile是包含了要执行的R代码所在文件的文件名,outfile是接收输出文件的文件名, options部分则列出了控制执行细节的选项。依照惯例,infile的扩展名是.R,outfile的扩 展名为.Rout。 对于Windows,则需使用: 图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权
16 第1章R语言介绍 将路径调整为R.ex所在的相应位置和脚本文件所在位置。要进一步了解如何调用R,包括命 令行选项的使用方法,请参考CRAN(htp://cran..r-project.org)上的文档“Introduction toR”①。 1.6将输出用为输入一结果的重用 的一个非常实用的特点是,分析的输出结果可轻松保存,并作为进一步分析的输入使用。 让我们通过一个R中已经预先安装好的数据集作为示例阐明这一点。如果你无法理解这里涉及的 统计知识,也别担心,我们在这里关注的只是一般原理。 首先,利用汽车数据mtcars:执行一次简单线性回归,通过车身重量(wt)预测每加仑行驶 的英里数(mpg)。可以通过以下语句实现: 1m(mpg-wt,data=mtcars) 结果将显示在屏幕上,不会保存任何信息。 下一步,执行回归,区别是在一个对象中保存结果: lmfit <-lm(mpg-wt,data=mtcars) 以上赋值语句创建了一个名为1mfit的列表对象,其中包含了分析的大量信息(包括预测值、残 差、回归系数等)。虽然屏幕上没有显示任何输出,但分析结果可在稍后被显示和继续使用。 键入summary(lmfit)将显示分析结果的统计概要,p1ot(lmfit)将生成回归诊断图形, 而语句cook<-cooks.distance(1mfit)将计算影响度量统计量2,plot(cook)对其绘图。要 在新的车身重量数据上对每加仑行驶的英里数进行预测,不妨使用predict(lmfit,mynewdata)。 要了解某个函数的返回值,查阅这个函数在线帮助文档中的“Vlue”部分即可。本例中应 当查阅help(1m)或?1m中的对应部分。这样就可以知道将某个函数的结果赋值到一个对象时, 保存下来的结果具体是什么。 1.7处理大数据集 程序员经常问我R是否可以处理大数据问题。他们往往需要处理来自互联网、气候学、遗传 学等研究领域的海量数据。由于在内存中存储对象,往往会受限于可用的内存量。举例来说, 在我服役了5年的2G内存Windows PC上,我可以轻松地处理含有1000万个元素的数据集(100 个变量×100000个观测)。在一台4G内存的Mac上,我通常可以不费力地处理含有上亿元素的 数据。 但是也要考虑到两个问题:数据集的大小和要应用的统计方法。R可以处理GB级到TB级的 数据分析问题,但需要专门的手段。大数据集的管理和分析问题留待附录G中讨论。 ①其中文版文档名为“R导论”。CRAN上的下载地址为http://cran.r-project.org/doc/contrib/Ding-R-intro_cn.pdf。. —译者注 ②这里使用了C0k距离作为度量影响的统计量,详见第8章“回归分析”。一译者注 图灵社区会员matrixvirus(matrixvirus@163.com))专享尊重版权
16 第 1 章 R 语言介绍 将路径调整为R.exe所在的相应位置和脚本文件所在位置。要进一步了解如何调用R,包括命 令行选项的使用方法,请参考CRAN(http://cran.r-project.org)上的文档“Introduction to R”①。 1.6 将输出用为输入——结果的重用 R的一个非常实用的特点是,分析的输出结果可轻松保存,并作为进一步分析的输入使用。 让我们通过一个R中已经预先安装好的数据集作为示例阐明这一点。如果你无法理解这里涉及的 统计知识,也别担心,我们在这里关注的只是一般原理。 首先,利用汽车数据mtcars执行一次简单线性回归,通过车身重量(wt)预测每加仑行驶 的英里数(mpg)。可以通过以下语句实现: 结果将显示在屏幕上,不会保存任何信息。 下一步,执行回归,区别是在一个对象中保存结果: 以上赋值语句创建了一个名为lmfit的列表对象,其中包含了分析的大量信息(包括预测值、残 差、回归系数等)。虽然屏幕上没有显示任何输出,但分析结果可在稍后被显示和继续使用。 键入summary(lmfit)将显示分析结果的统计概要,plot(lmfit)将生成回归诊断图形, 而语句cook<-cooks.distance(lmfit)将计算影响度量统计量②,plot(cook)对其绘图。要 在新的车身重量数据上对每加仑行驶的英里数进行预测,不妨使用predict(lmfit, mynewdata)。 要了解某个函数的返回值,查阅这个函数在线帮助文档中的“Value”部分即可。本例中应 当查阅help(lm)或?lm中的对应部分。这样就可以知道将某个函数的结果赋值到一个对象时, 保存下来的结果具体是什么。 1.7 处理大数据集 程序员经常问我R是否可以处理大数据问题。他们往往需要处理来自互联网、气候学、遗传 学等研究领域的海量数据。由于R在内存中存储对象,往往会受限于可用的内存量。举例来说, 在我服役了5年的2G内存Windows PC上,我可以轻松地处理含有1000万个元素的数据集(100 个变量×100 000个观测)。在一台4G内存的iMac上,我通常可以不费力地处理含有上亿元素的 数据。 但是也要考虑到两个问题:数据集的大小和要应用的统计方法。R可以处理GB级到TB级的 数据分析问题,但需要专门的手段。大数据集的管理和分析问题留待附录G中讨论。 —————————— ① 其中文版文档名为“R导论”。CRAN上的下载地址为http://cran.r-project.org/doc/contrib/Ding-R-intro_cn.pdf。 ——译者注 ② 这里使用了Cook距离作为度量影响的统计量,详见第8章“回归分析”。——译者注 图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权
1.8示例实践17 1.8示例实践 我们将以一个结合了以上各种命令的示例结束本章。以下是任务描述。 (I)打开帮助文档首页,并查阅其中的“Introduction to R”。 (2)安装vcd包(一个用于可视化类别数据的包,我们将在第11章中使用)。 (3)列出此包中可用的函数和数据集。 (4)载入这个包并阅读数据集Arthritis的描述。 (S)显示数据集Arthritisl的内容(直接输入一个对象的名称将列出它的内容)。 (6)运行数据集Arthritis自带的示例。如果不理解输出结果,也不要担心。它基本上显示 了接受治疗的关节炎患者较接受安慰剂的患者在病情上有了更多改善。 (7退出。 所需的代码如代码清单1-3所示,图1-7显示了结果的示例。 代码清单1-3使用一个新的包 help.start() install.packages("vcd") help(package="vcd") library(vcd) help(Arthritis) Arthritis example(Arthritis) q() 。达小 4wt-到4方4n+tmn4,e一,卡4t÷t statistical Data Analysis Manuals w 4山海N的 Arthritis Treatment Data Description Format 图1-7代码清单1-3的输出。(从左至右)为关节炎示例的输出结果、帮助文档首页、 vcd包的信息、Arthritis数据集的信息,以及一幅展示关节炎治疗情况和治 疗结果之间关系的图 图灵社区会员matrixvirus(matrixvirus@163.com))专享尊重版权
1.8 示例实践 17 1 2 3 4 5 16 6 7 8 9 10 11 12 13 14 15 1.8 示例实践 我们将以一个结合了以上各种命令的示例结束本章。以下是任务描述。 (1) 打开帮助文档首页,并查阅其中的“Introduction to R”。 (2) 安装vcd包(一个用于可视化类别数据的包,我们将在第11章中使用)。 (3) 列出此包中可用的函数和数据集。 (4) 载入这个包并阅读数据集Arthritis的描述。 (5) 显示数据集Arthritis的内容(直接输入一个对象的名称将列出它的内容)。 (6) 运行数据集Arthritis自带的示例。如果不理解输出结果,也不要担心。它基本上显示 了接受治疗的关节炎患者较接受安慰剂的患者在病情上有了更多改善。 (7) 退出。 所需的代码如代码清单1-3所示,图1-7显示了结果的示例。 代码清单1-3 使用一个新的包 图1-7 代码清单1-3的输出。(从左至右)为关节炎示例的输出结果、帮助文档首页、 vcd包的信息、Arthritis数据集的信息,以及一幅展示关节炎治疗情况和治 疗结果之间关系的图 图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权
18 第1章R语言介绍 如本例所示,我们只需使用少量R代码即可完成大量工作。 1.9小结 本章中,我们了解了R的一些优点,正是这些优点吸引了学生、研究者、统计学家以及数据 分析师等希望理解数据所具有意义的人。我们从程序的安装出发,讨论了如何通过下载附加包来 增强R的功能。探索了R的基本界面,以交互和批处理两种方式运行了R程序,并绘制了一些示例 图形。还学习了如何将工作保存到文本和图形文件中。由于R的复杂性,我们花了一些时间来了 解如何访问大量现成可用的帮助文档。希望你对这个免费软件的强大之处有了一一个总体的感觉。 既然已经能够正常运行R,那么是时候把玩你自己的数据了。在下一章中,我们将着眼于R 能够处理的各种数据类型,以及如何从文本文件、其他程序和数据库管理系统中导入数据。 图灵社区会员matrixvirus(matrixvirus@163.com))专享尊重版权
18 第 1 章 R 语言介绍 如本例所示,我们只需使用少量R代码即可完成大量工作。 1.9 小结 本章中,我们了解了R的一些优点,正是这些优点吸引了学生、研究者、统计学家以及数据 分析师等希望理解数据所具有意义的人。我们从程序的安装出发,讨论了如何通过下载附加包来 增强R的功能。探索了R的基本界面,以交互和批处理两种方式运行了R程序,并绘制了一些示例 图形。还学习了如何将工作保存到文本和图形文件中。由于R的复杂性,我们花了一些时间来了 解如何访问大量现成可用的帮助文档。希望你对这个免费软件的强大之处有了一个总体的感觉。 既然已经能够正常运行R,那么是时候把玩你自己的数据了。在下一章中,我们将着眼于R 能够处理的各种数据类型,以及如何从文本文件、其他程序和数据库管理系统中导入数据。 图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权
第2章 创建数据集 本章内容 口探索R中的数据结构 口输入数据 口导入数据 口标注数据 按照个人要求的格式来创建含有研究信息的数据集,这是任何数据分析的第一步。在R中, 这个任务包括以下两步: 口选择一种数据结构来存储数据: 口将数据输入或导入到这个数据结构中。 本章的第一部分(2.1~2.2节)叙述了R中用于存储数据的多种结构。其中,2.2节描述了向 量、因子、矩阵、数据框以及列表的用法。熟悉这些数据结构(以及访问其中元素的表述方法) 将十分有助于了解R的工作方式,因此你可能需要耐心消化这一节的内容。 本章的第二部分(2.3节)涵盖了多种向R中导入数据的可行方法。可以手工输入数据,亦可 从外部源导入数据。数据源可为文本文件、电子表格、统计软件和各类数据库管理系统。举例来 说,我在工作中使用的数据往往来自于SQL数据库。偶尔,我也会接受从DOS时代遗留下的数据, 或是从现有的SAS和SPSS中导出的数据。通常,你仅仅需要本节中描述的一两种方法,因此根据 需求有选择地阅读即可。 创建数据集后,往往需要对它进行标注,也就是为变量和变量代码添加描述性的标签。本章 的第三部分(2.4节)将讨论数据集的标注问题,并介绍一些处理数据集的实用函数(2.5节)。下 面我们从基本知识讲起。 2.1数据集的概念 数据集通常是由数据构成的一个矩形数组,行表示观测,列表示变量。表2-1提供了一个假 想的病例数据集。 图灵社区会员matrixvirus(matrixvirus@163.com))专享尊重版权
2.1 数据集的概念 19 1 2 3 4 5 16 6 7 8 9 10 11 12 13 14 15 创建数据集 本章内容 探索R中的数据结构 输入数据 导入数据 标注数据 按照个人要求的格式来创建含有研究信息的数据集,这是任何数据分析的第一步。在R中, 这个任务包括以下两步: 选择一种数据结构来存储数据; 将数据输入或导入到这个数据结构中。 本章的第一部分(2.1~2.2节)叙述了R中用于存储数据的多种结构。其中,2.2节描述了向 量、因子、矩阵、数据框以及列表的用法。熟悉这些数据结构(以及访问其中元素的表述方法) 将十分有助于了解R的工作方式,因此你可能需要耐心消化这一节的内容。 本章的第二部分(2.3节)涵盖了多种向R中导入数据的可行方法。可以手工输入数据,亦可 从外部源导入数据。数据源可为文本文件、电子表格、统计软件和各类数据库管理系统。举例来 说,我在工作中使用的数据往往来自于SQL数据库。偶尔,我也会接受从DOS时代遗留下的数据, 或是从现有的SAS和SPSS中导出的数据。通常,你仅仅需要本节中描述的一两种方法,因此根据 需求有选择地阅读即可。 创建数据集后,往往需要对它进行标注,也就是为变量和变量代码添加描述性的标签。本章 的第三部分(2.4节)将讨论数据集的标注问题,并介绍一些处理数据集的实用函数(2.5节)。下 面我们从基本知识讲起。 2.1 数据集的概念 数据集通常是由数据构成的一个矩形数组,行表示观测,列表示变量。表2-1提供了一个假 想的病例数据集。 第2章 图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权