R 具有灵活的编程环境,受到了广大数据分析师的青睐。本文将为学习和使用R打下基础,在开始之前我们先学习安装R并了解一些有用的知识。

1.1 从CRAN获取并安装R

R可在Windows、OS X和Linux/UNIX平台上运行。我们主要在Comprehensive R Archive Network(CRAN)上在线查找R资源。如果要访问R语言项目网站,可以导航到本地CRAN镜像并下载适合当前操作系统的安装程序。附录A.1节提供了安装基础版R的步骤及相关说明。

1.2 打开R之初体验

R语言是一种严谨且对字符敏感的解释性语言,这意味着我们在控制台和命令行界面输入的指令要符合特定的语法规则。只有这样,软件才能够解释并执行代码,最后返回结果。

注意

R 是一种高级编程语言。这种级别指的是脱离计算机执行的基础细节的抽象级别,换句话说,就是低级语言要求我们手动管理机器分配内存等事情,但是像R这样的高级语言,就不需要做这些。

打开R基本应用程序时,我们会看到R控制台。图1-1是Windows版本的R界面,图1-2左图是OS X版本的R界面。R自带图形用户界面(GUI),用户一般通过该界面使用R。

虽然不加解释的外观使许多大学生无所适从,但是它保持了软件的本质——一个可用于许多任务的白色统计画布。Windows版本的R默认将控制台窗格和编辑窗格合并在一个窗口中,而OS X版本的两个窗格是独立的窗口(我们也可以在GUI的preferences选项里更改,参见1.2.1节)。

R程序员初学者必读:如何安装R语言编程环境?3分钟搞定
图1-1 Windows操作系统下的R GUI应用程序(默认配置)

R程序员初学者必读:如何安装R语言编程环境?3分钟搞定
R程序员初学者必读:如何安装R语言编程环境?3分钟搞定
图1-2 OS X系统下R GUI的基本控制台窗格(左)和内置编辑窗格(右)

注意

本书将在一些章节中具体指出Windows和OS X版的R GUI的功能,因为这是初学者常用的两个平台。Linux/UNIX可以在终端、系统外壳或批处理模式下运行R。本书中绝大多数的代码在所有版本中是通用的。

1.2.1 控制台和编辑窗格
R系统主要有编写R代码和查看结果两种窗口类型。我们刚才看到的控制台和命令行解释器是用于执行所有代码和输出所有文本、数值结果的。我们也可以在R控制台中直接计算或输出结果。不过,我们通常在编写较短的单行命令时使用控制台。

默认情况下R的提示符是>,其后有文本显示光标,表示R已经准备就绪正在等待命令。为避免与数学符号大于号“>”混淆,一些教材(包括本书)对其进行了修改。一般将>改为R>,方法如下:

options(prompt="R> ")
R>
将光标定位在提示符后面,我们可以使用键盘的向上箭头(↑)和向下箭头(↓)来滚动浏览之前执行过的命令,以方便对前面的命令进行小幅度调整。

编写更长的代码和函数时,先在编辑器中写好命令,然后在控制台中执行,这样相对比较方便。因此,R有一个内置代码编辑器。在代码编辑器中编写的R脚本实质上只是带有.R扩展名的纯文本文件。

我们也可用R GUI菜单打开一个新的编辑器实例(例如File→New script(Windows)或者File→ New Document(OS X))。

内置编辑器的特点之一是作为实用的快捷键(例如Windows中的Ctrl-R或OSX 中的

R程序员初学者必读:如何安装R语言编程环境?3分钟搞定
-RETURN),会自动向控制台发送代码。我们可以执行光标所在的行、突出显示的行、一行中突出显示的部分以及许多行中突出显示的部分。当使用多个R脚本文件时,通常会同时打开多个编辑器窗格;而快捷键仅提交当前选择的编辑器的代码。

我们可以根据操作系统在一定程度上对控制台或编辑器的外观(例如颜色、字符间距)进行修改。图1-3是Window R GUI的preferences选项卡(Edit→GUI preferences…)和OS X R GUI的preferences选项卡(R→Preferences…)。OS X版R的一个很好的特性是编辑器的代码配色和括号匹配功能,这提高了大段代码的编写和可读性。

R程序员初学者必读:如何安装R语言编程环境?3分钟搞定
R程序员初学者必读:如何安装R语言编程环境?3分钟搞定
图1-3 Windows(左)和OS X(右)的R GUI的preferences选项卡

1.2.2 注释
在R中,我们可以为代码添加注释。只要一行以一个井字号(#)开始,其后编写的任何东西都会被解释器忽略。例如,在控制台执行下列代码将不会返回结果:

R> # This is a comment in R…
注释也可添加在命令后面:

R> 1+1 # This works out the result of one plus one!
[1] 2
如果我们在编辑器中编写了很长很复杂的代码,这时添加的注释就有助于我们自己以及别人理解代码的内容。

1.2.3 工作路径
R会话有一个与之相关的工作路径。除非在保存或导入数据文件时明确指定了文件路径,否则R会使用默认工作路径。使用getwd函数可查看工作路径的位置:

R> getwd()
[1] “/Users/tdavies”
在指定文件夹位置时,R使用的是正斜杠“/”而不是反斜杠“\”,并且文件路径要用双引号引起来。

使用setwd函数可以改变默认工作路径:

R> setwd("/folder1/folder2/folder3/")
我们可提供与当前工作路径相关或完全不相关的文件路径(从系统根目录)。无论哪种方式,切记:R区分大小写;文件夹名称的命名与符号要准确匹配,否则会发生错误。

也就是说,如果每次读取或写入文件夹时都指定一个完整且正确的文件路径(更多内容参见第8章),那么文件可保存在任何位置。

1.2.4 安装和加载R包
R的基本安装包含了大量用于数值计算、常用统计分析、绘图和可视化的内置命令。这些命令可直接使用且不需要以任何方式加载或导入。

包(也称为库)内含有略微专业的技术和数据集。我们经常会使用其他程序人员贡献的包,本书也是如此,因而我们需要知道如何安装和加载所需的包。

附录A.2节涵盖了下载包和从CRAN安装包的相关详细信息,下面是一些简要介绍。

加载包

R基本安装中包含少量但值得推荐的包(在附录A.2.2节列出)。这些包不需要分别安装,但是在使用时需要通过命令library加载。本书将使用MASS包(Venables and Ripley,2002)。要加载该包(或者其他已安装的包)并获得其中的函数和数据集,只需在控制台执行library:

R> library(“MASS”)
注意,library命令仅在R会话运行时提供包的功能。当关闭R然后重新打开时,需要重新加载要使用的包。

安装包

有成千上万个包没有包括在R典型安装中,为了将它们加载进R中,首先需要从存储库(通常是CRAN)下载并安装。最简单的方法是直接在R提示符后使用install.packages函数(需要连接互联网)。

例如,我们将在第26章使用ks包(Duong,2007)。执行下列代码将尝试连接到本地CRAN镜像并下载安装ks,同时它依赖的几个包(称为依赖项)也会相应下载安装:

R> install.packages(“ks”)
控制台将在过程完成时显示执行结果。

我们只需安装一次包便可在R中一直使用。我们可以在任何新打开的R实例中调用library来加载已安装的包(如ks),与加载MASS包一样。

附录A.2.3节提供了更多有关安装包的详细信息。

更新包

包的维护者会定期更新版本、修复漏洞以及添加新功能。我们经常需要检查已安装的包是否有更新。

在提示符下,执行下列代码将尝试连接到我们设置的包存储库(默认为CRAN),查找已安装包的最新版本:

R> update.packages()
附录A.3节提供了更多关于更新包的信息,附录A.4节讨论了备用的CRAN镜像和存储库。

1.2.5 帮助文件和函数文档

R 提供了一系列的帮助文件,我们可以用来查找特定的功能,如查找如何准确使用函数以及为函数指定参数(也就是我们在执行函数时提供给函数的值或对象)、弄清楚参数在操作中的作用、了解返回的对象形式、学习使用函数示例以及获取有关如何调用软件或数据集的详细信息。

在控制台使用help函数或使用快捷键“?”,可以获得给定命令或对象的帮助文件。下面以内置算术平均函数mean为例:

R> ?mean
这就打开了如图1-4所示的文件。

如果不确定所需函数的准确名字,把字符串(用双引号引起来)传递给help.search或使用快捷键“??”,便可在所有已安装的包中搜索文档:

R> ??“mean”
结果提供了一个函数列表,包括它们所在的包以及相关描述,这些帮助文件都包含字符串“mean”,如图1-4a所示(突出显示的条目就是“mean”)。

R程序员初学者必读:如何安装R语言编程环境?3分钟搞定
(a)

R程序员初学者必读:如何安装R语言编程环境?3分钟搞定
(b)

图1-4 帮助文件和函数文档

(a)OS X版中mean函数的R帮助文件 (b)在帮助文件中搜索字符串“mean”的结果

所有的帮助文件都是如图1-4a所示的形式。文件长度和详细程度通常反映了函数执行操作的复杂程度。大多数帮助文件包含了以下内容的前3条,其他内容虽常见但不是必需的。

说明部分(Description)是有关操作的简要说明。
用法部分(Usage)说明在控制台应用函数的形式,包括参数的默认顺序和默认值(这些是用“=”来设置参数)。
参数部分(Arguments)给出关于每个参数的作用以及它们定义域(如果有的话)的详细信息。
数值部分(Value)是关于函数返回对象的性质(如果有的话)。
参考文献部分(References)提供有关函数命令或用法的相关引用。
参阅部分(See Also)提供相关功能的帮助文件。
示例部分(Examples)提供可执行代码,我们可以将其复制并粘贴到控制台,来演示这些功能。
帮助文件中可能还有其他内容——若函数有更详尽的解释,通常包含详细信息部分(Details),位于参数部分(Arguments)的后面。

第一次看这些内容时,我们或许会觉得很专业,但最好还是继续查看帮助文件——即使已经知道一个函数的工作原理,但是了解函数文档的布局和解释函数文档是用户熟练使用R的必备技能。

1.2.6 第三方编辑器

R的普及带动了第三方代码编辑器以及现有代码编辑软件的兼容性插件的发展,这些都方便了在R中编写代码。

一个突出的贡献是RStudio(RStudio Team,2015)。这是一个集成开发环境(IDE),可在Windows、OS X和Linux/UNIX平台上免费使用。

RStudio包含一个可直接提交代码的编辑器,为文件、对象和项目管理等单独提供了点击式窗格,以及包含R代码的标记文档。附录B详细地讨论了RStudio及其功能。

总的来说,使用包括RStudio在内的哪一款第三方编辑器,都是个人选择。本书中使用的是经典的基本应用程序R GUI。