26
1 获取 R 语言 对于做统计分析、可视化和报告来说, R 语言是一个非常棒的工具,应用在广泛的领域。 R 语言应用的主要领域是银行、科技创业公司、食品公司、国际发展和援助公司、医院和房 地产开发公司的项目,其他我们见过的使用 R 语言的领域有在线广告、保险、生态学、遗 传学和药剂学。R 语言的使用者包括高级机器学习的统计学家、熟悉其他语言的程序员和讨 厌使用 Excel 但未经训练的高级数据分析师。 使用 R 语言之前需要先下载并安装,其过程并不复杂。 1.1 下载 R 语言 使用 R 语言的第一步是在计算机上下载 R 语言,不像有些语言(比如 C++ ),R 语言必 须安装才能够使用 R 语言程序可以很容易从 R 语言的维护项目 Comprehensive R Archive NetworkCRAN )获得,在 http://cran.r-project.org/ 页面顶端有各种操作系统(WindowsMas OS X Linux )下载 R 语言的链接。 对于 WindowsMac OS X 系统,有预构建的安装程序可供使用,而对于其他的 Linux 系统,需要使用源码编译安装。总的来说,在这些平台上安装 R 语言与安装其他程序一样 方便。 Windows 用户应当点击链接“Download R for Windows”,下载“R 3.x.x for Windows”, 这里“ x”表示 R 的版本,版本会定期更新。 从技术角度来讲,C++ 需要有编译器,所以也需要安装。 Chapter 1

获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

  • Upload
    others

  • View
    27

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

第 1 章

获取 R 语言

对于做统计分析、可视化和报告来说,R 语言是一个非常棒的工具,应用在广泛的领域。

R 语言应用的主要领域是银行、科技创业公司、食品公司、国际发展和援助公司、医院和房

地产开发公司的项目,其他我们见过的使用 R 语言的领域有在线广告、保险、生态学、遗

传学和药剂学。R 语言的使用者包括高级机器学习的统计学家、熟悉其他语言的程序员和讨

厌使用 Excel 但未经训练的高级数据分析师。

使用 R 语言之前需要先下载并安装,其过程并不复杂。

1.1 下载 R 语言

使用 R 语言的第一步是在计算机上下载 R 语言,不像有些语言(比如 C++),R 语言必

须安装才能够使用 一○。R 语言程序可以很容易从 R 语言的维护项目 Comprehensive R Archive Network(CRAN)获得,在 http://cran.r-project.org/ 页面顶端有各种操作系统(Windows、Mas OS X 和 Linux)下载 R 语言的链接。

对于 Windows、Mac OS X 系统,有预构建的安装程序可供使用,而对于其他的 Linux系统,需要使用源码编译安装。总的来说,在这些平台上安装 R 语言与安装其他程序一样

方便。

Windows 用户应当点击链接“Download R for Windows”,下载“R 3.x.x for Windows”, 这里“x”表示 R 的版本,版本会定期更新。

一○ 从技术角度来讲,C++ 需要有编译器,所以也需要安装。

Chapter 1

Page 2: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

2   R 语言:实用数据分析和可视化技术

类似的,Mac 用户应当点击“ Download R for (Mac)OS X”,然后点击“ R-3.x.x.pkg”,

这里“x”表示 R 目前的版本,也有 32 位和 64 位两种版本。

Linux 用户应当按相应的分发机制下载 R 语言,比如 Ubuntu 和 Debian 系统用 apt-get命令安装,Red Hat 系统用 yum 命令安装,SUSE 用 zypper 命令安装,等等。

1.2 R 语言版本

截至目前(撰写本书时),R 语言的最新版本是 3.4.0。本书第 1 版时是 3.0.1。CRAN 一

般一年一个发布周期,版本有三个数字,中间数字的增加代表大版本的变化。例如,2015年发布 3.2.0 版本,2016 年发布 3.3.0,2017 年发布 3.4.0。版本的最后一个数字代表当前大

版本的小更新。

大部分的 R 语言功能通常都是跟以前版本向后兼容的。

1.3 32 位与 64 位

选择 32 位还是 64 位归结为计算机是否支持 64 位—大部分新的计算机都是支持的—

及所使用数据的大小。64 位版本能处理任意大的内存数据(RAM),因此能很好地应用。

这一点从 3.0.0 版本开始尤其重要,支持 64 位整数的系统意味着大量的数据可以存储

在 R 语言中。

在过去,某些软件包要求 32 位版本的 R 语言,但最近很少了。现在安装 32 位版本 R语言的仅有的原因是为了支持一些传统分析,或者在支持 32 位的处理器上使用,如英特尔

的低功耗 Atom 芯片。

1.4 安装 R 语言

在 Windows 和 Mac 上安装 R 语言跟安装其他程序一样。

1.4.1 在 Windows 系统上安装

在下载的地方找到正确的安装包,对于 Windows 用户可以参看图 1-1。R 软件应当用超级管理员权限安装,右击安装包,选择“以管理员身份运行”。随后出

现一个提示,要求输入管理员密码。

第一个对话框如图 1-2 所示,提供了一个语言的选择,默认语言是英语,选择合适的语

言然后单击“OK”按钮。

然后,图 1-3 所示的提示建议关闭其他所有程序,很少遵守这个建议,也没有这个必

要,直接单击“Next”按钮即可。

Page 3: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

第 1 章 获取 R 语言   3

图 1-1 在本地安装 R

图 1-4 为软件使用许可证,如果不同意这个重要的许可

协议就不能使用 R,所以单击“Next”按钮即可。

如图 1-5 所示,选择安装包的安装位置。虽然 CRAN 的

官方建议是将 R 安装在名字中没有空格的目录里,但是有一

半情况下默认的安装目录都是 Program Files\R,这会在

编译要求复杂的代码的软件包时带来麻烦。

图 1-3 在现代版本的 Windows 系统中, 图 1-4 同意许可协议

   可以忽略该提示

图 1-2 选择语言

Page 4: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

4   R 语言:实用数据分析和可视化技术

如果想改变安装路径,单击“Browse”按钮,出现文件夹选项,如图 1-6 所示。

  

图 1-5 选择安装位置    图 1-6 改变安装路径

最好选择在 C 盘(或另外的硬盘)或“ My Documents”里面,“ My Documents”是

人性化的名字,其路径是“ C:\Users\UserName\Documents”,名字中没有空格。如

图 1-7 所示。

图 1-8 展示了安装的选项,除非对 32 位文件有特殊需要,一般不需要选中 32 位文件,

其他选项都应该被选中。

图 1-7 选择好安装路径 图 1-8 除了 32 位文件外全部勾选

因为并没有太多的选项且我们推荐把 RStudio 作为前端使用,所以启动选择项应该保留

为默认的“No”,如图 1-9 所示。

之后,选择把开始菜单快捷方式放在哪里,如图 1-10 所示,建议把文件夹命名为 R 并

把每一版本都放在那里。

Page 5: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

第 1 章 获取 R 语言   5

图 1-9 保留默认设置,使用 RStudio 作为前端 图 1-10 是否创建开始菜单项

R 语言的多种版本都在相同的开始菜单

文件夹里,可以在不同的版本里进行代码的测

试,如图 1-11 所示。

最后一个选项是选择是否完成一些其他任

务,如创建桌面图标(如果用“ RStudio”不

是太有用)。郑重建议选择“ saving the version number in the registry”和“ associating R with RData f iles”,这些设置如图 1-12 所示。

单击“ Next”按钮,开始安装,显示安装

进度条,如图 1-13 所示。

最后一步,如图 1-14 所示,单击“Finish” 按钮,完成安装。

1.4.2 在 Mac OS X 系统上安装

找到合适的安装程序,后缀名为“.pkg”,

双击启动。这将弹出简介,如图 1-15 所示,

单击“Continue”按钮开始安装。

如图 1-16 所示为 R 语言的版本信息。单击“Continue”按钮。

然后会出现许可信息的对话框,如图 1-17 所示,为了使用 R 语言,唯一可行的选择是

单击“Continue”按钮。

图 1-11  安装不同版本的 R 语言以便

开发和测试不同的版本

Page 6: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

6   R 语言:实用数据分析和可视化技术

图 1-12 保留默认设置 图 1-13 安装进度条

图 1-14 完成安装

图 1-15 Mac 上的安装简介

Page 7: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

第 1 章 获取 R 语言   7

图 1-16 选择版本

图 1-17 许可协议信息

单击“ Agree”按钮确认同意许可协议,如图 1-18 所示,为了使用 R 语言,这些是必

需的。

图 1-18 同意许可协议

Page 8: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

8   R 语言:实用数据分析和可视化技术

单击“ Install”按钮安装 R 语言,另外,可以单击“ Change Install Location”按钮来

选择不同的安装位置,如图 1-19 所示。

图 1-19 默认为所有用户安装 R 语言

如果提示,请输入用户密码,如图 1-20 所示。

图 1-20 安装时输入管理员密码

这将启动安装过程,如图 1-21 所示,显示安装进度条。

完成之后,如图 1-22 所示会出现安装成功的信息,单击“Close”按钮完成安装。

1.4.3 在 Linux 系统上安装

从标准的分发机构中检索 R 语言,然后将会一步到位地下载、编译和安装 R 语言。本

书以 Ubuntu 系统为例,使用 apt-get 命令安装。

Page 9: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

第 1 章 获取 R 语言   9

图 1-21 安装进度条

图 1-22 成功安装

第一步编辑 sources.list(路径:/etc/apt/sources.list)文件,列出安装包列表。

每行记录都需要包含两部分信息:CRAN 镜像和 Ubuntu 或者 Debian 版本。

这里选用 RStudio 镜像为 http://cran.rstudio.com/bin/linux/ubuntu。2017 年年初支持的 Ubuntu 版本有 Yakkety Yak (16.10)、Xenial Xerus (16.04)、Wily Werewolf

(15.10)、Vivid Vervet (15.04)、Trusty Tahr (14.04; LTS) 和 Precise Pangolin (12.04; LTS)。 一○

在 Ubuntu 16.04 上从 RStudio CRAN 镜像安装 R 语言,需增加下面一行:

一○ https://cran.r-project.org/bin/linux/ubuntu/README.

Page 10: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

10   R 语言:实用数据分析和可视化技术

到 /etc/apt/sources.list。这步可以手动添加,也可以在终端运行下面的命令达到同样的

效果:

接着,增加安装包管理的授权:

现在可以更新 apt-get,并安装 R 语言。这里同时安装 R 语言基础包和 R 语言开发包,

后续就能构建自己的 R 语言包了。

R 语言也原生支持 Debian、Red Hat 和 SuSE 系统。

1.5 微软开源 R 语言

微软收购 Revolution Analytics 公司后提供了自己的 R 语言社区版本,称为 Microsoft R Open。其优点是:基于 Visual Studio 的集成开发环境;通过矩阵内核库(MKL)部分支持

多线程,所以矩阵计算速度比较快。可以在网址 https://mran.microsoft.com/download/ 免费

获取。同时微软也提供相应的 R 语言付费版本,称为 Microsoft R Server。其提供大数据量

级和分布式的支持,并很好地兼容 Microsoft SQL Server 和 Hadoop 操作。更多信息参见网

站 https://www.microsoft.com/en-us/server-cloud/products/r-server/。

1.6 小结

此刻,R 语言已经完全可用,并带有原生的 GUI。然而,最好安装 RStudio 并使用它的

界面。更多 RStudio 的细节参看 2.2 节,包括下载、启动安装包,就像安装其他程序一样。

Page 11: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

第 2 章

R 语言环境

第 1 章中,我们已经下载并安装了 R 语言,接下来熟悉一下怎么使用 R 语言。正如 图 2-1 所示,Windows 操作系统上的 R 语言界面相当简单。Mac界面(见图 2-2)具有一些

额外的功能,而 Linux 少得多,仅仅是一个终端。

图 2-1 Windows 上的标准 R 界面

不同于其他的语言,R 语言是极具可交互性的。也就是说,每次运行一个命令就可以看

到结果。例如,C++ 语言需要写出、编译和运行代码的所有部分才能看到结果。在 R 语言

里,对象的状态和结果在任何一点都可以看到,这种可交互性是 R 软件最神奇的方面之一。

Chapter 2

Page 12: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

12   R 语言:实用数据分析和可视化技术

图 2-2 Mac OS X 上的标准 R 界面

R 语言有许多相应的集成开发环境(IDE),本书默认使用 RStudio,其详细信息见 2.2 节。

2.1 命令行界面

命令行界面使 R 软件具有非常强大的功能,但同时也令人学起来费劲。有很多尝试建

立点击式的 R 语言,如 Rcmdr,但是没有真正成功。这证明了输入命令比使用鼠标要好。

这可能会令人难以置信,特别是对于学习 Excel 的人而言,但是随着时间的推移,它变得更

加容易而且很少出错误。

例如,在 Excel 里做回归拟合至少需要点击鼠标 7 次,或者更多:Data>>Data Analysis>> Regression>>OK>>Input Y Range>>Input X Range>>OK。当做一个小调整或者有了

新数据时,所有的步骤就得重新来过。更可怕的是通过邮件和你的同事同步上述步骤。相

反,同样的命令在 R 语言里面只有一行,可以很容易地进行重复、复制和粘贴。起初,也

许很难让人相信,但是过一段时间,命令行让生活变得越来越容易。

在控制台中的“ >”R 语言后输入 R 语言的命令,接着按回车键。输入的项可能是简单

的数字 2,也可能是复杂的函数,这些将在第 8 章详细介绍。

要重复一行代码,简单地按向上的方向键并再次按回车键。所有之前的命令都保存了,

只需要重复使用向上和向下的方向键就可以循环使用它们。

Page 13: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

第 2 章 R 语言环境   13

在 Windows 和 Mac 中使用 Esc 终止一个命令,在 Linux 中使用 Ctrl+C 组合键。

通常当做大型的分析时,最好是使用代码文件。几年前,最常用的处理方式是使用文

本编辑器 一○,如用 Sublime 或 Notepud++ 去编写代码,然后复制和粘贴到 R 控制台。虽然这

样可以工作,但这样做比较草率,会导致程序之间不停地切换。

幸亏现在有 RStudio,极大地改变了现状,详细信息见 2.2 节。

2.2 RStudio虽然现在有很多可用的 IDE,但是现在最好的是 JJ Allaire 领导的小组设计的 RStudio,

他们之前的产品有 ColdFusion 和 Windows Live Writer。RStudio 可用于 Windows、Mac 和

Linux,并且界面看起来相同。更令人印象深刻的是 RStudio 服务器,它在 Linux 服务器上

运行一个 R 语言实例,它允许用户在 Web 浏览器中通过标准 RStudio 界面运行命令。它适

用于 R 语言的任何版本(高于 2.11.1),包括微软的 Microsoft R Open 和 Microsoft R Server。RStudio 有如此多的选项,令人无所适从。接下来将介绍一些最有用或经常使用到的功能。

RStudio 是高度可定制的,但是它的基本界面大致看起来如图 2-3 所示。在这种情况

下,左下方的窗口是 R 控制台,可被当作标准的 R 控制台使用。左上窗口是文本编辑器,

具有强大的功能,右上方的窗口包含工作区的信息、历史命令、当前文件夹中的文件和 Git版本控制,右下方窗口展示绘图、软件包信息和帮助文件。

图 2-3 RStudio 的通用界面

一○ 这里指的是文本编辑器而不是文字处理器,如 Microsoft Word。文本编辑器保存文本的信息,但是字处

理器可能会添加格式,不适于插入控制台。

Page 14: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

14   R 语言:实用数据分析和可视化技术

有很多方法发送和执行文本编辑器中的命令到控制台,发送一行命令时,把光标放置

在感兴趣的那一行,按 Ctrl+Enter 组合键(在 Mac 中是 Command+Enter 组合键)。要

插入一段选中的代码,只需高亮要选择的部分命令,然后按 Ctrl+Enter 组合键。要运行

整个文件的代码,按 Ctrl+Shift+S 组合键。

当输入一行代码,如对象的名称或函数名时,按 Tab 键自动完成代码。如果不止一个

对象或函数符合所输入的字母,会弹出一个对话框给出如图 2-4 所示的匹配选项。

图 2-4 RStudio 中的对象名称自动匹配

按 Ctrl+1组合键将光标移到文本编辑器,按 Ctrl+2组合键将光标移到控制台。将光

标移到上一个文本编辑器选项卡,在 Windows 下按 Ctrl+Alt+Left组合键,在 Linux 下按

Ctrl+PageUp组合键,在 Mac 下按 Ctrl+Option+Left组合键。将光标移动到下一个文本

编辑器选项卡,在 Windows 下按 Ctrl+Alt+Right组合键,在 Linux 下按 Ctrl+PageDown组合键,在 Mac 下按 Ctrl+Option+Right组合键。为了得到快捷方式的完整列表,单击

Help>>Keyboard Shortcuts。或者在 Windows 和 Linux 下使用键盘快捷键 Alt + Shift + K,在 Mac 下使用 Option + Shift + K 组合键。更完整的快捷键列表见网址 https://support.rstudio.com/hc/en-us/articles/200711853-Keyboard-Shortcuts。

2.2.1 RStudio 项目

RStudio 的一个主要特色是 RStudio Project(项目),一个项目是文件的集合—可能是

数据、结果或图—这些都是彼此相关的 一○。每个软件包有对应的工作目录。

开始一个新的项目的最简单方法是单击 File>>New Project,如图 2-5 所示。

一○ 这不同于 R 会话,R 会话是 R 中所有的对象和工作,对目前的使用记录保持着记忆,通常随着 R 的重启

而重置。

Page 15: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

第 2 章 R 语言环境   15

图 2-5 创建新项目

如图 2-6 所示为 3 个可选选项:在新的

目录下创建新的项目,在已存在的目录下

创建新的项目,或从一个版本控制仓库(如

Git 或 SVN)检出一个项目。 一○在上述三种

情况下,都会在项目文件夹中自动创建一

个 .Rproj 文件,文件的内容包含各种项目的

设置,并跟踪该项目。

选择创建一个新的目录将打开一个对话

框,如图 2-7 所示,需要填写项目名称和创

建新目录的路径。

选择已存在的目录,如图 2-8 所示。

图 2-7 创建项目路径 图 2-8 选择一个已存在的目录

一○ 使用版本控制要求电脑中安装有版本控制程序。

图 2-6 选择项目类型

Page 16: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

16   R 语言:实用数据分析和可视化技术

选择使用版本控制(我们倾向于 Git),首先会问是使用 Git 还是 SVN,如图 2-9 所示。

选择 Git 需要填写仓库 URL,例如 [email protected]:jaredlander/coefplot.git,然后填写项

目目录的名字,如图 2-10 所示,与创建新的目录相同,需要选择创建这个新目录的位置。

图 2-9 选择版本控制 图 2-10 选择 Git

2.2.2 RStudio 工具RStudio 有一些高度可定制的选项。大多数包含在“Options”对话框里,单击“Tools”>>

“Options”可看到,如图 2-11 所示。

图 2-11 打开“Options”

首先是“ General”的选项,如图 2-12 所示,在 Windows 下有一个选项控制使用的 R 语言的版本。当计算机里面有多个 R 语言版本时,这是非常有用的。然而,当改变 R 语

言版本之后,RStudio 必须重新启动。在将来,RStudio 将计划加入对每个项目提供不同

Page 17: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

第 2 章 R 语言环境   17

R 语言版本的功能,在启动或退出时,建议不要恢复或保存 .RData 文件 一○。这样每次 R 语

言将打开一个新的会话,并且避免了可能发生的变量崩溃或是有不需要的数据在内存中 驻留。

“ Code”选项中的“ Editing”选项卡控制文本编辑器中代码输入和显示的风格,如 图 2-13 所示。实践中一个好的做法是用空格(2 个或者 4 个) 二○代替 Tab 制表符,因为不同的

文本编辑器对 Tab 有不同的解释。一些老派的程序员更喜欢 vim 和 Emacs 模式。

图 2-12 RStudio 中的 General 选项 图 2-13 代码编辑选项

“ Code”选项中的“ Display”选项卡,控制文本编辑器和控制台中的提示显示,如 图 2-14 所示。“ Highlight selected word”高亮代码。“ Show line numbers”显示代码行

数,易于代码导航。“ Show margin”显示边距,以便于推断何时代码行太长以至于妨碍 阅读。

“ Code”选项中的“ Saving”选项卡,控制代码文件的保存,如图 2-15 所示。大部分

情况下,选择默认选项即可。特别地,将“Serialization”选项设为“Platform Native”。

“ Code”选项中的“ Completion”选项卡,控制编程时的代码补全,如图 2-16 所示。

有些人喜欢输入完函数时自动增加括号,但有人不喜欢。另外一个分歧点是,是否在命名函

数的参数的等号周围添加空格。

“ Code”选项中的“ Diagnostics”选项卡,开启代码检测,如图 2-17 所示。对检测输

错的对象名称、代码风格和常见错误相当有好处。

一○ RData 文件是保存和分享 R 对象的一个快捷方式,我们将在 6.5 节介绍。二○ 对 Markdown 文档来说,4 个更合适。

Page 18: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

18   R 语言:实用数据分析和可视化技术

图 2-14 代码显示选项 图 2-15 代码保存选项

图 2-16 代码完整性选项 图 2-17 代码检测选项

“Appearance”选项如图 2-18 所示,可以改变代码的样式。背景和文本的字体、大小和

颜色都可以定制。

“Pane Layout”选项如图 2-19 所示,简单地重新排列组成 RStudio 的窗格。

“ Packages”选项如图 2-20 所示,设置 R 语言包的选项,最重要的是 CRAN 镜像。虽

然这可以从控制台改变,但是它是默认设置。最好是选择地理位置最近的镜像。

“ RMarkdown”选项,设置 RMarkdown 文档相关的参数,如图 2-21 所示。可用来在外

部窗口或者查看器中渲染文档进行预览,使得 RMarkdown 文件可以像 notebook 一样在线渲

染结果、图像和方程。

Page 19: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

第 2 章 R 语言环境   19

图 2-18 代码外观选项 图 2-19 设置 RStudio 中窗格的位置

图 2-20 关于包的设置选项 图 2-21 RMarkdown 选项

“Sweave”选项,如图 2-22 所示,可能有点“名不符实”,因为这是在 Sweave 或 knitr

之间进行选择。两个都可以生成 PDF 文档,knitr 也能够建立 HTML 文档。knitr 在第

27 章将有详细的介绍在 3.1 节将会解释,尽管它首先需要安装,但却是一个更好的选择。这

里也可以对 PDF 查看器进行选择。

RStudio 包括一个对 LaTeX 和 Markdown 文档进行拼写检查的程序(使用 knitr),它

由“Spelling”选项控制,如图 2-23 所示,这里不需要更多的设置。

Page 20: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

20   R 语言:实用数据分析和可视化技术

图 2-22 设置是否合用 Sweave 或 Knitr 图 2-23 是否开启拼写检查功能

Git/SVN,如图 2-24 所示,表明 Git 和 SVN 可执行文件的位置。只需要设置一次,但

对于版本控制是必要的。

最后一个选项是“ Publishing”,如图 2-25 所示,设置发布文档到 ShinyApps.io 或者

RStudio 的连接。

图 2-24 设置 Git 和 SVN 的位置以便 RStudio 调用 图 2-25 设置 ShinyApps.io 或者 RStudio Connect

2.2.3 Git 集成有许多原因让我们选择版本控制,首要的是,它在不同的时刻能及时地提供代码的快

Page 21: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

第 2 章 R 语言环境   21

照,并且很容易地恢复到快照。另外一个好处是有一个代码的备份,并且很容易在计算机之

间传递代码。

虽然 SVN 曾经是版本控制的黄金准则,但是它已经被 Git 取代,所以 Git 将成为关注的

焦点。把一个项目与 Git 仓库 一○连接之后,

RStudio 具有如图 2-26 所示的 Git 面板。

它的主要功能是提交更改,推送代码

到服务器,提取代码变化。单击“Commit” 按钮将打开一个对话框,如图 2-27,显示

了修改的文件或新文件。单击其中的文件

会显示修改:粉红表示删除,绿色表示添

加。有一个用于填写提交的信息的空间。

图 2-27 显示文件变动(见彩图)

一○ 应该事先和 GitHub (https://github.com/) 或者 Bitbucket (https://bitbucket.org/) 一起建立一个 Git 账户。

图 2-26 Git 面板

Page 22: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

22   R 语言:实用数据分析和可视化技术

单击“Commit”按钮将会暂存变化,单击“Push”按钮将把它们推送到服务器。

2.3 微软 Visual Studio

微软 Visual Studio 为 R 语言提供了 IDE 工具。虽然大部分 R 语言使用者更喜欢使用

RStudio,但是此集成开发工具对于熟悉 Visual Studio 的使用者也是个不错的选择。

2.4 小结

在过去的几年里,R 语言的可用性已经得到了极大提高,这主要得感谢 RStudio。IDE极大地提高了程序员的熟练程度,并且改变了人们对 R 的态度,让人们从容忍变为享

受。 一○RStudio 代码的补全、文本编辑、Git 集成和项目是好的编程工作流程不可或缺的部分。

一○ 我们的一个学生反馈自从使用了 RStudio,与 Matlab 相比,他们更青睐 R。

Page 23: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

第 3 章

R 语言包

R 语言越来越流行的最大原因在于它收集了用户贡献的包。截至 2017 年 2 月初在其官方

网站 CRAN一○上就有 2000 多人编写的 10 000 个可用的软件包。如果存在某种统计方法,那么其

就有很大的概率已在 R 软件包上实现。R 语言不仅有如此众多的软件包,而且许多包都是由某

一领域的专家编写的,如 Andrew Gelman、Trevor Hastie、Dirk Eddelbuettel 和 Hadley Wickham。

R 语言包本质上是实现某些功能或者一系列功能的预先写好的代码库(library)。例如,

用来进行生存分析的 survial 包,用来绘图的 ggplot2 包和处理空间数据的 sp 包。

但需要记住的是,并不是所有的包都具有一样的高质量。一些 R 语言包功能稳定且维

护得也很好,而一些包虽然出于很好的动机创建但却经常因不可预测的错误而出故障,还有

一些包问题重重。即便是最好的包,由于大部分是统计学家为统计学而编写的,所以可能与

计算机工程师所期望的不一样。

本书不打算提供一系列高质量包的详尽用法,因为包在不断地更新。然而,有些包的

用处十分普遍以至于本书可能会像 R 语言的基础组件一样使用它们。例如:Hadley Wickham 的 ggplot2、tidyr 和 dplyr 包;Trevor Hastie、Robert Tibshirani 和 Jerome Friedman 的

glmnet 包;Dirk Eddelbuettel 的 Rcpp 包和 Yihui Xie(谢益辉)的 knitr 包。还有本书作

者在 CRAN 上传的包,coefplot、useful 和 resumer 等。

3.1 安装 R 语言包

正如 R 软件有许多功能一样,有多种方法来安装 R 软件包。最简单的方法是用 RStudio

一○ http://cran.r-project.org/web/packages/

Chapter 3

Page 24: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

24   R 语言:实用数据分析和可视化技术

提供的图形用户界面(GUI)来安装 R 语言包,如图 3-1 所示。单击图中写有“ Packages”的选项卡或者在键盘上按 Ctrl+7 找到 R 语言包的界面。

图 3-1 RStudio 中的软件包界面

在界面左上角单击“ Install Packages”按钮打开如图 3-2 所示的对话框。

接着就可以输入软件包的名称(RStudio 中有很好

的名称自动补全功能),单击“Install”按钮安装即可。

如要安装多个包,可在包名称之间加入逗号区分,下

载并安装所有的包,接着就可以使用。选中“ Install dependencies”复选框则会自动下载并安装该软件包

以及其依赖包例如,coefplot 包功能的实现依赖于

ggplot2、plyr、dplyr、useful、stringr 和

reshape2 包,并且每个包仍依赖其他包。

另一种安装包的方法是在控制台中输入命令:

这将实现与在 GUI 里同样的功能。

最近出现了直接从 GitHub 或 BitBucket 仓库安装软件包的新方法,其特点是能够获取

包的开发版本。该功能通过 devtools 包来实现。

为了使用 devtools 包的功能,需要首先用 library 加载 devtools 包,详见 3.2 节。

图 3-2 RStudio 中的安装软件包对话框

Page 25: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

第 3 章 R 语言包   25

如果从仓库安装的软件包中包含编译性语言(一般是 C++ 或者 FORTRAN)的源代码,

那就需要事先安装好相应的编译器。具体

细节见 30.7 节。

有时候需要从本地文件安装软件包,

可能是 zip 格式或者 tar.gz 格式。这也可以

用之前的安装软件包对话框,但是选择安

装途径为“Package Archive File”,如图 3-3 所示。然后再指明软件包所在位置。注意

这不会安装相关的依赖软件包,且如果相

关的依赖软件包不存在会导致安装失败。

因此,请务必首先安装相关的依赖软件包。

和前面类似,也可以通过命令 install.packages 来完成。

包的卸载

在极少情况下需要把软件包卸载,最简单的方法是在图 3-1 所示的 RStudio 中软件包界

面的右边单击灰色圆圈内的白色 X 按钮即可。或者使用 remove.packages 命令,其中第

一个参数为需要卸载的软件包的名称字符向量。

3.2 加载 R 语言包

现在包已经安装好准备要开始使用了,首先需要加载。现在有两种命令可供选择,

library 或者 require。它们都可以完成加载软件包的需求,只是 require 会在成

功加载时返回 TRUE,加载失败时返回带有 FALSE 字符的警告。在函数体内部加载包时

返回值非常有用,可据此选择接受或者拒绝。调用 library 加载软件包时,如果该包未安

装,则会抛出错误。这对脚本代码有益。在一般情况下,两者没有什么区别,写脚本时推

荐使用 library。两个函数的参数是所需加载包的名称,有无引号没有区别。因此,加载

coefplot 包:

将会打印出相关的依赖软件包。可以通过设置参数 quietly 为 TRUE 来隐藏。

软件包仅在启动全新的 R 会话时需要加载一次。如在 3.2.1 节中所描述的,一旦被加

载,它会一直存在于 R 语言工作空间中直至 R 语言被重启或者其被分离。

图 3-3 RStudio 中的选择存档文件安装软件包对话框

Page 26: 获取 R - images.china-pub.comimages.china-pub.com/ebook8060001-8065000/8064936/ch01.pdf · Linux 用户应当按相应的分发机制下载 R 语言,比如Ubuntu 和Debian 系统用apt-get

26   R 语言:实用数据分析和可视化技术

另一种加载包的方法是在 RStudio 的 Packages 界面的复选框内选择要加载包的名称,

可参见图 3-1 的左半部分。这也会以运行前面代码的形式加载包。

卸除软件包

有时候已经加载的包可能需要被卸除。这可以简单地通过 RStudio 的 Packages 界面清

除复选框中的选项或者用 detach 函数来完成。该函数用包的名称前加“ package:”作

为参数,并且需要用引号。

不同包内的函数名称经常相同。例如,在 arm包(由 Andrew Gelman 编写)和 coefplot

包中都有 coefplot 函数。 一○如果两个包都被加载,当使用 coefplot 函数时则会调用最

后被加载包内的函数。解决的办法是在调用函数时带上包名并在两者之间用两个冒号(::) 隔开。

这不仅可以调用相应的函数,也可以调用未被加载包内的函数。

3.3 构建 R 语言包

构建包是使用 R 语言工作中最有意义的事之一,特别是将包通过 CRAN 社区共享给其

他人。第 30 章将详细讨论这部分细节。

3.4 小结

R 软件包构成了 R 语言社区的主要部分,社区上经常讨论怎样用 R 语言实现想要的功

能。也正是社区使包得到推广,使得许多统计技术可以很方便地被利用。在如此众多的软件

包中寻找自己所需的包是有挑战性的。CARN 任务视图(http://cran.r-project.org/web/views/)提供了实现不同功能的软件包列表。然而,最好的方法是在 R 社区里提问。附录 A 提供了

R 语言社区的一些资源。

一○ 这种特殊的情况是因为我们对 arm 包中的 coefplot 函数进行了改进,在其他情况并不见得有共同 之处。