第1章 快速入门

第1章 快速入门

卓越的数据分析需要建立在出色的工具平台上,没有合适的工具,数据分析也是空中楼阁。即使对专家来说,没有得力的分析工具,从大数据集中直接提取模式并得到结论也几乎是不可能的。因此,一款合适的工具,例如 R,会显著地提升处理数据的效率。就我的经验而言,学习一门编程语言就类似于学习一种人类语言。通常情况下,我们先对一门语言有一个全局的了解,激发学习兴趣,然后通过一些小项目进行尝试,这是一条不错的学习路径。而在此之前,若是纠结于词汇和语言的细节就有些本末倒置了。本章对R进行全面概述,以便帮助你快速入门。

本章我们将介绍以下内容:

  • R简介
  • 对R的需求
  • R的安装
  • R的编辑工具

一旦软件和工具准备就绪,你就可以编写一个简单的R程序来体验它的基本运行方式了。接下来,我们便开始了R的学习之旅,从基础方法到高级技术和应用,一步一步领略R语言的编程之美。

1.1 R简介

R 是一门强大的编程语言和统计计算环境,也是数据探索、分析和可视化的利器。它是免费、开源的,并且具有一个活跃且强大的、快速成长的社区。在这里,用户和开发者共享彼此的经验,他们贡献了超过7500个扩展包,因此,R 可以处理众多领域的各种各样的问题(参见https://cran.r-project.org/web/views/)。

尽管R编程语言的起源只追溯到1993年,但数据相关行业普遍采用R语言编程,因此在近十年里,R已迅速成长并成为数据科学领域的通用工具。

一般来说,R不仅是一门编程语言,而且是一个综合计算环境,一个活跃且强大的社区,一个快速生长和扩大的生态系统。

1.1.1 编程语言

作为一门编程语言,R已经演变和发展了20多年。开发者的目标非常清晰,就是使R成为一款简单易用且灵活的,能够综合执行统计计算、数据探索和可视化的工具。

然而,易用性和灵活性通常是相互冲突的。如果可以通过简单单击几个按钮就可以完成多种多样的统计分析任务,那么在实现自定义和自动化,并保证工作的可重复性时就不可能兼具灵活性。另一方面,R可以非常灵活地使用多种函数进行数据转换,构建复杂的图形等,但学习和正确地组合这些函数就会有一定的难度。R良好地平衡了易用性和灵活性,使得它在众多工具中脱颖而出。

1.1.2 计算环境

作为一个计算环境,R 具有轻量级和安装即用的特点。相比其他著名的统计软件,例如Matlab和SAS,R更小且更容易配置。

在本书中,我们使用RStudio处理绝大部分R中的工作。该集成开发环境提供了丰富的功能,如语法高亮、自动补齐、扩展包管理、图形查看器、帮助查看器、环境查看器以及调试功能。这些功能极大地提高了用户的工作效率。

1.1.3 社区

作为一个社区,R是强大且活跃的。你现在就可以访问Try R(http://tryr.codeschool.com/),通过交互式教程对R的基本知识有个初步的了解。在实际编写代码时,你可能会遇到各种各样的问题,但是不必独自解决所有问题。你可以在google上搜索一个R的问题,就会发现几乎总是可以在Stack Overflow(http://stackoverflow.com/questions/tagged/r)上找到很多解答。如果你的问题没有完全解决,也可以在上面继续提问,往往几分钟就可以得到回答。

如果你需要使用某个扩展包,并且详细地了解它的工作方式,可以访问它的在线存储库(repo)获取源代码。许多存储库托管在GitHub(https://www.github.com)上。在GitHub上,你可以做更多事情。当发现一个扩展包不能正确运行时,你可以提交一份问题报告。如果你需要的某个功能正好契合某个扩展包的开发目的,也可以提交一份需求报告。同样,如果你有兴趣解决某个扩展包的问题或者丰富它的功能,也可以加入该项目,编辑代码并发送合并请求,这样你做的更改就可以被原开发者接收到。如果你的更改被接受了,那么,恭喜你,你就会成为该扩展包的一个贡献者。令人惊奇的是,R和它的数千个扩展包就是被世界各地的贡献者们开发创建的。

1.1.4 生态系统

作为一个生态系统,R在除IT行业以外的所有数据相关领域中迅速发展壮大。大多数用户并不是专业开发者,而是数据分析师和统计人员。这些用户可能不会写最优质的代码,但是他们有助于拓展R语言的前沿工具,任何人都可以自由地使用这些工具,而不必重新研究开发。

举个例子,假设一个计量经济学家写了一个扩展包,实现了检测某类时间序列模式的新方法。一些用户可能会发现它有趣又有用。还有一些专业用户可能改进了原来的代码使其更快、更通用。不久之后,量化投资者可能会将该方法纳入到交易策略中,因为它可以检测到通常在其投资组合中引起风险的模式。一天结束时,投资者会发现,将计量经济学家的工具应用到现实世界中,借此构建的投资组合风险较小。

这就是R生态系统的工作方式。这也是R在这些领域闪耀的原因之一:它能够快速地将IT行业之外(通常是数据科学、学术界和工业界)的前沿知识应用到生态系统中可用且合适的工具上。换句话说,它有助于将这些领域的知识和数据科学转变为生产力和价值。

1.2 对R的需求

在众多统计软件中,R能够脱颖而出,有以下几个方面的原因。

  • 免费:R是完全免费的。你不需要购买许可证书,因此,使用R和大部分扩展包是没有准入障碍的。
  • 开源:R和大部分扩展包都是完全开源的。数以千计的开发者不断地审查包的源代码,查看是否存在需要修复的漏洞或者可以改进的地方。如果你遇到了异常,可以研究和挖掘源代码,找到问题所在,并解决问题。
  • 流行:即使R不是最流行的编程语言,但在统计编程语言和数据挖掘、数据分析与可视化平台方面,它也是相当受欢迎的。高度通用性意味着你和其他用户之间的沟通更加方便,因为你们“讲”同一种语言。
  • 灵活:R是动态脚本语言。它的高度灵活性允许多种范式的编程风格,包括函数式编程和面向对象编程,它还支持灵活的元编程。此外,R的灵活性使你能够执行高度定制的复杂的数据转换和可视化。
  • 可重复性:当使用基于图形用户界面的软件时,你只需要从菜单中点选。但是,如果你没有编写脚本,就很难自动并准确地复制你已经完成的工作。
    在大多数科研领域和许多工业应用中,由于各种原因,重复性是必要的。R脚本可以精确地描述和记录你使用计算环境和数据的各项操作,因此,可以从头开始完全重现之前的所有步骤。
  • 丰富的资源:R拥有数量巨大、增速迅猛的在线资源。一类资源就是扩展包。当我编写本书时,在CRANComprehensive R Archive Network)上就有超过7500个扩展包。CRAN是一个全球网络镜像服务器,你可以从中获取一致的最新版本的R软件和扩展包。
    世界各地有超过4500个开发者创建并维护着这些扩展包,开发者们几乎遍布所有的数据相关领域,例如多元统计分析、时间序列分析、计量经济学、贝叶斯推断、最优化、金融学、遗传学、化学计量学、计算物理学等。你可以访问CRAN任务视图(https:// cran.r-project.org/web/views/)获取全面的总结。
    除了这些数量庞大的扩展包之外,还有很多开发者经常编写个人博客,并在Stack Overflow上回答问题,分享他们的观点、经验和一些实战方法。同时,还有很多关于R的社区网站,例如R-bloggers(http://www.r-bloggers.com/)、R documentation(http://www.rdocumentation.org/)和METACRAN(http://www.r-pkg.org/)。
  • 强大的社区:R的社区成员不仅有R的开发者,还有(并且大多数都是)R用户,他们有不同的专业背景,例如统计学、计量经济学、金融学、生物信息学、机械工程学、物理学、医学等。
    有非常多的R开发者积极地贡献开源项目或者扩展包。社区的共同目标就是使数据分析、数据探索和可视化变得简单有趣。
    如果你在使用R的过程中被某个问题绊住了,只需在Google上搜索一下,极有可能已经存在解决方案了。如果没有,你也可以在Stack Overflow上提问,并且很快就会得到回复。
  • 前沿:很多R用户都是统计学、计量经济学或其他学科的专业研究者。很多时候,作者在发表一篇新论文的时候都会贡献一个新的扩展包,该扩展包就纳入了论文中前沿技术的实现算法,可能是一个新的统计检验、一种模式识别方法或者更好的调整优化算法。
    无论是何种前沿技术,R社区都有幸将数据科学知识应用于现实世界,进一步提高其功能并揭示其潜力。

1.3 R的安装

为了安装R,你需要前往R的官网(https://www.r-project.org/)去下载R软件(https://cran.r- project.org/mirrors.html),选择适合的镜像,并下载与你的计算机操作系统相适应的版本。在编写本书时,R最新的版本是3.2.3。本书中的例子就是在这个版本下创建和运行的,适用的操作系统是Windows和Linux,但是使用更早版本的R或者其他操作系统,其运行结果也没有显著差异。

如果你使用的是Windows操作系统,只需下载最新版的安装程序,并运行安装。安装过程简单便捷,但是仍会有许多使用者在某一些步骤上遇到问题。

当你在Windows操作系统下进行安装时,在选择安装内容时,会看到安装列表中有4项内容。其中,Core files是指R的核心库,Message translations提供了关于警告和错误的多种翻译版本。可能使你感到困惑的是选择32-bit Files选项,还是64-bit Files选项。其实不必担心,你只需了解64位版本的R比32位的在单一过程中能够处理更多数据即可。如果你的计算机是最近几年买的,那么,极有可能是64位操作系统,支持64位程序,因此,默认选择64位文件。如果你使用的是32位操作系统,很遗憾的是,你不能使用64位的R,除非你的计算机硬件支持并安装了64位的操作系统。

我建议使用默认选项进行安装,如图1-1所示。

图1-1

另一个可能使你感到困惑的选项是要不要保存许可证中的数字。检查这些选项会使其他程序识别安装的是R的哪个版本更简单。如果你确定仅在R环境中使用,请保持默认选项,直接下一步即可,如图1-2所示。

图1-2

然后,安装程序开始将文件复制到你的硬盘中,如图1-3所示。

图1-3

最终,R就部署在你的计算机中了。此时,你只能通过两种方式使用R:命令提示符(终端)或者R GUI。

如果允许安装程序创建快捷方式到桌面上,你就会发现有两个R的快捷方式。R在命令提示符中运行,R GUI在极其简单的GUI中运行。

尽管你现在就可以启动R,但不意味着就要用这种方式使用它。我强力推荐使用RStudio编辑和调试R脚本。实际上,本书就是在RStudio的R Markdown中编写的。虽然RStudio很强大,但没有正确安装R的话,它也没有办法工作。换句话说,R是底层,RStudio是前端,RStudio帮助你更好地使用R。

如果你使用 Windows 操作系统,也可以安装Rtools(http://cran.rstudio.com/bin/ windows/ Rtools/),这样就可以在R中编写、编译和调用C++代码,也可以安装包含C++代码的扩展包,并在C++的环境中进行编译。

1.4 RStudio

RStudio是R编程语言强大的用户界面。它是免费、开源的,适用于多种操作系统,包括Windows、Mac和Linux。

RStudio具有非常强大的功能,能够极大地提升数据分析和可视化的工作效率。它支持语法高亮、自动补齐、多标签视图、文件管理、图形窗口、扩展包管理、集成帮助查看器、代码格式化、版本控制、交互式调试以及其他功能。

你可以从https://www.rstudio.com/products/rstudio/download下载最新发布的RStudio。如果你想体验预览版本的新功能,就需要从https://www.rstudio.com/products/rstudio/download/ preview下载预览版。注意,RStudio并没有内嵌在R中,所以你需要确保在使用RStudio时已经安装了R。

接下来,我将向你简要介绍RStudio的用户界面。

1.4.1 RStudio的用户界面

图1-4展示的是Windows操作系统中的RStudio用户界面。如果你使用Mac OS X或者Linux支持的版本,界面看起来几乎是一样的。

图1-4

你可能注意到,主窗口是由几部分构成。每个部分都称为一个窗格,分别执行不同的函数。这些窗格都是为数据分析师处理数据而精心设计的。

1.控制台

图1-5 展示的是内嵌在RStudio中的R控制台。在大多数情况下,控制台的工作原理和命令提示符或者终端完全一致。实际上,当你在控制台输入一条命令时,RStudio便向R引擎提交请求,由R引擎执行所有命令。RStudio 的作用就是中介传输,将用户的输入提交给R引擎,再将返回的结果呈现出来。

图1-5

使用控制台,你可以很方便地执行一条命令,定义一个变量,或者交互式地执行表达式来计算一个统计测度,转换数据,或者生成图表。

2.编辑器

处理数据时,我们通常不在控制台输入命令。相反,我们会编写一份脚本文件,即一组命令的集合,来表示整个操作过程的逻辑流,该脚本文件可以直接读取并由R引擎执行。如图1-6 所示,脚本文件的编写就是在编辑器中完成的。编辑器可用于编辑 R 脚本、markdown 文档、网页,以及许多类型的配置文件,甚至是C++源代码。

图1-6

代码编辑器的功能比纯文本编辑器的功能多很多:它支持语法高亮、自动补齐R代码、断点调试等。具体来说,当编辑R脚本时,你可以使用以下快捷键。

  • 按Ctrl + Enter组合键运行选中的命令行。
  • 按Ctrl + Shift + S组合键执行当前文档,也就是依次执行当前文档中的所有表达式。
  • 按Tab键或Ctrl + Space组合键展示匹配当前输入变量和函数的自动补齐列表。
  • 单击行数的左侧边缘并设置一个断点;下次执行这行命令时,程序会停下来等待检查。

3.环境窗格

环境窗格展示已经被创建的变量和函数,这些变量和函数可以重复使用。默认情况下,它展示的是全局环境中的变量,即你正在使用的工作空间,如图1-7所示。

图1-7

每次创建一个新的对象(一个变量或函数),环境窗格中就会出现一个新的元素。这个元素展示了变量名和其值的简短描述。当你改变某个符号的值,或者移除这个符号时,实际上是修改了环境,因此环境窗格会反映出你的更改。

4.历史窗格

历史窗格展示了在控制台执行过的表达式。只需双击命令行或者选中命令行再单击“To Console”,你就可以重复执行之前运行过的任务,如图1-8所示。

图1-8

历史记录保存在工作目录中的.Rhistory文件中。

5.文件窗格

文件窗格展示了文件夹中的文件列表。你可以在文件夹之间进行操作:创建新文件夹、删除或重命名文件夹或文件等,如图1-9所示。

图1-9

如果你的工作正在一个RStudio项目上进行,在文件窗格可以很方便地查看和整理项目文件。

6.绘图窗格

绘图窗格用来展示R代码生成的图形。如果你生成了多个图形,前面的图形会被保存下来,单击向前或向后便可以查看所有图形(只要你没有清除它们),如图1-10所示。

图1-10

当你调整绘图窗格的尺寸时,其中的图形会自动调整以适应窗格大小,这样一来,图形看起来就像未曾调整过一样友好,你也可以将图形导出到文件中备用。

7.扩展包窗格

R 的很多强大之处来自于它的扩展包。扩展包窗格展示所有安装的扩展包,你可以从CRAN中安装或更新包,或将已有包从库中移除,如图1-11所示。

图1-11

8.帮助窗格

R 的强大之处也源自其非常详细的帮助文档。如图1-12所示,帮助窗格展示帮助文档,这样你就可以很方便地学习如何使用函数。

图1-12

有很多方式可以查看函数的帮助文档。

  • 在搜索框输入函数名就可以直接找到。
  • 在控制台输入函数名并按F1键。
  • 输入“?函数名”,并执行它。

实战中,你不必记住所有的R函数,只需记住,在面对不熟悉的函数时要如何寻求帮助。

9.查看器窗格

查看器窗格是一项新特征;R包的数量一直在增加,查看器窗格的引入,就是将R和现有的JavaScript库的功能相结合,使数据的展示形式更加丰富,也增加了交互功能。

图1-13就是我编写的formattable(http://renkun.me/formattable)扩展包中的一个例子,这个例子展示了在R的数据框中进行Excel的条件化格式操作的一种简单实现。

图1-13

1.4.2 RStudio服务器

如果你使用的是基于Linux的版本,就可以轻松地构建RStudio或RStudio Server的服务器版本。这样一来,RStudio在主机服务器(可能比你的笔记本电脑更强大更稳定)上运行,你就可以在网页浏览器中运行RStudio中的R会话。虽然用户界面没有什么差别,但是连接至服务器后,就可以像使用本地计算机一样使用服务器的计算和内存资源。

1.5 入门示例

在这一小节中,我将通过一个简单的例子,演示如何在控制台中输入命令来执行计算、模型拟合和生成图形。

首先,我们创建一个向量x,它由100个服从正态分布的随机数构成。然后,创建另一个向量y,它也包含100个数,而且每一个数都是x中对应数的3倍加2,再加上一些随机噪声。注意,<-是赋值操作符,我们后面会讲到。使用str( )函数输出向量的结构:

x rnorm(100)
y rnorm(100) * 0.5
str(x)
##  num [1:100] -0.4458 -1.2059 0.0411 0.6394 -0.7866 ...
str(y)
##  num [1:100] -0.022 -1.536 2.067 4.348 -0.295 ...

既然我们知道xy之间的真实关系是y = 3x+2+ε,那么,就可以利用xy的样本拟合一个简单的线性回归,并查看线性模型如何还原线性参数(即2和3)。调用lm(yx)拟合这个模型:

model1 lm(y ~ x)

模型拟合的结果保存在名为model1的对象中。我们只需输入model1或者明确地输入print(model1)就可以查看模型的拟合情况:

model1
##  
## Call:
## lm(formula = y ~ x)
##
## Coefficients:
## (Intercept)
x
##       2.051        2.973

如果你想查看更多细节,可以对model1调用summary( )

summary(model1)
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
##      Min       1Q   Median       3Q      Max
## -1.14529 -0.30477  0.03154  0.30042  0.98045
##
## Coefficients:
##             Estimate  Std. Error  t value  Pr(>|t|)
## (Intercept)  2.05065     0.04533   45.24    <2e-16 ***
## x            2.97343     0.04525   65.71    <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4532 on 98 degrees of freedom
## Multiple R-squared:  0.9778, Adjusted R-squared:  0.9776
## F-statistic:  4318 on 1 and 98 DF,  p-value: < 2.2e-16

我们将样本点和拟合的模型展示在图1-14中:

plot(x, y, main = "Simple linear regression")
abline(model1$coefficients, col = "blue")

图1-14

上面这个例子演示了一些简单函数,帮助你对如何使用R建立一个初步印象。即使不熟悉例子中出现的符号和函数,也没有关系,后面的章节会讲解你需要了解的基本对象和函数。

1.6 小结

在本章中,你掌握了R的基本情况和主要优点。我们已经学习了如何在Windows操作系统下安装R。为了使R编程更简单,我们选择使用RStudio。通过RStudio的用户界面,你了解了主窗口中各个窗格的功能。最后,我们通过运行几行R命令拟合了一个模型,并绘制了一幅简单的图形,对使用R有了初步的认识。

下一章将介绍R中的基本概念和数据结构,帮助你熟悉R对象的行为。之后,你便可以轻松地展示、操作和处理各种形式的数据。

目录

相关技术

推荐用户