前言

前言

R 是为统计计算、数据分析和可视化而设计的。近年来,它已成为数据科学和统计学中最受欢迎的语言。R语言编程很大程度上涉及数据处理。对于不熟悉R语言的人来说,用R进行编程可能是一个挑战。

作为一种动态语言,R可以灵活地使用不同的数据结构,不像C++、Java和C#这类编译型语言那么严格。当我开始使用R处理和分析数据时,发现它的行为很古怪,不可预测,而且有时非常不稳定。

一些数据分析项目并没有在构建模型上做很多工作。相反,数据清洗、处理和可视化花了更多时间。事实上,在代码运行报错或返回的结果很奇怪时,找到问题的根源才是最耗时的。处理编程问题比处理专业领域内的问题更令人受挫,尤其是在遇到错误,但搞了几小时仍然毫无头绪的时候。

但是,随着项目的增多,也积累了更多的经验,我逐渐了解了对象和函数的行为,并且发现R比我想象的更优雅、更稳定。这就是我编这本书的原因,以分享我对R语言编程逐步深入的认识过程。

通过阅读本书,你会对R编程语言及其大量的工具有一个普遍一致的理解,并将学习到提高效率的最佳实践方法,更深入地了解如何使用数据,并且对如何在R中编程,以及用正确的技巧解决问题等更有信心。

本书主要内容

第1章“快速入门”讨论了一些有关R的基础内容,包括如何部署R环境,如何在RStudio中编写代码。

第2章“基本对象”介绍基本的R对象及其性质。

第3章“工作空间管理”介绍工作目录、R环境和扩展包库的管理方法。

第4章“基本表达式”介绍R语言的基本表达式:赋值、条件和循环。

第5章“基本对象操作”讨论每个数据分析师都应该了解的基本函数,以便在R中使用基本对象。

第6章“字符串的使用”讨论与字符串相关的R对象,以及一些字符串操作技术。

第7章“数据处理”解释一些简单的读写数据的函数,并通过一些使用基本对象和函数的实际案例进行演示。

第8章“R的内部机制”通过介绍惰性计算、环境、函数和词法作用域,探讨R的计算模式。

第9章“元编程”介绍元编程技术以帮助理解语言对象和非标准化求值。

第10章“面向对象编程”阐释R中众多的面向对象编程系统:S3、S4、RC和社区提供的R6。

第11章“数据库操作”介绍在R中如何使用SQLite和MySQL等流行的关系型数据库,以及MongoDB和Redis等非关系型数据库。

第12章“数据操作”介绍如何使用data.table和dplyr处理关系型数据,以及使用rlist处理非关系型数据的技术。

第13章“高性能计算”讨论R的性能问题和提高计算性能的常用方法。

第14章“网页爬虫”讨论网页、CSS和XPath选择器的基本结构,以及如何使用rvest包从简单的网页中抓取数据。

第15章“效率提升”演示了如何利用R Markdown和shiny app结合交互式图形来提高数据分析报告和展示的效率。

阅读本书还需要什么

运行书中的示例代码,需要安装R 3.3.0或更高版本,推荐使用RStudio开发环境。

对于第11章,运行示例代码需要一个可用的MongoDB服务器和一个Redis实例。

对于第13章,在Windows操作系统下需要安装Rtools 3.3来创建Rcpp代码,在Linux或macOS操作系统下,则需要gcc工具链。

本书的目标读者

本书主要面向从事数据相关项目并希望提高工作效率的读者,但可能不适合对编程语言和相关工具一无所知的人阅读。

本书也适用于想要系统地学习R编程语言、相关技术和推荐的扩展包及其实际应用的专业数据分析师。

书中的一些章节对于初学者来说比较高深,尽管阅读这些章节并不要求你是计算机专家或者专业的数据分析师,但我认为对基础编程概念有一些了解并具有数据处理的基本经验,会有助于对本书内容的理解。

约定

在本书中,你会发现一些用于区分不同信息的文本样式。以下是这些样式的示例及其含义的解释。

文本中包含的代码、数据库表名、文件夹名、文件名、文件扩展名、路径、虚拟的网址(URL)、用户输入和推特名称用代码体显示,如下所示:“apply( )函数也支持数组输入和矩阵输出。”

内联代码(变量和函数名)和代码块的样式设置如下:

x c(1, 2, 3)
class(x)
## [1] "numeric"
typeof(x)
## [1] "double"
str(x)
##  num [1:3] 1 2 3

当某个函数名或变量名被选中时,相同的函数名或变量名就会高亮显示:

x rnorm(100)
y rnorm(100) * 0.5
m lm(y ~ x)
coef(m)

第一次出现的术语重要词汇会以粗体显示。

小技巧:警告或重要的提示出现在这样的框中。


提示:提示和技巧以这种形式出现。

读者反馈

我们欢迎并重视读者的反馈。请让我们知道你对本书的看法——喜欢或不喜欢什么。读者的反馈对我们很重要,它有助于我们推出对读者更有价值的产品。

若想反馈给我们,可直接发送邮件到feedback@packtpub.com,并在邮件主题中注明书名。

如果你精通某一主题,并有兴趣编写或撰稿,请前往作者指南网页:www.packtpub. com/authors

用户支持

作为Packt图书的拥有者,我们准备了很多服务来最大化你的消费权益。

下载示例代码

你可以在http://www.packtpub.com登录账户并下载本书对应的示例代码。如果你是在其他地方购买的本书,可以访问http://www.packtpub.com/support进行注册,我们会将代码文件直接发到你的邮箱。

你可以按照以下步骤下载代码文件。

1.使用电子邮箱和密码在网站登录或注册。

2.将鼠标指针悬停在顶部的SUPPORT选项卡上。

3.单击Code Downloads & Errata按钮。

4.在Search对话框中输入书名。

5.选择想要下载的代码文件对应的书名。

6.从下拉菜单中选择购买本书的途径。

7.单击Code Download按钮。

也可以访问Packt出版社网站上的网页,单击Code Files按钮下载代码文件,还可以在搜索框中输入书名来访问该网页。请注意,需要登录你的Packt账户才能执行以上步骤。

文件下载好之后,请务必使用以下软件的最新版本进行解压:

  • WinRAR/7-Zip for Windows
  • Zipeg/iZip/UnRarX for Mac
  • 7-Zip/PeaZip for Linux

本书的代码同时托管在GitHub上:https://github.com/PacktPublishing/learningrprogramming。我们的GitHub主页上还有更多图书和视频资源:https://github.com/PacktPublishing/。快来浏览一下吧!

勘误

尽管我们已经尽全力确保本书内容的准确性,但是错误还是在所难免。如果你在我们的某本书中发现了错误(可能是文字或代码错误),请告知,我们将不胜感激。这样,你可以帮助其他读者避免困惑,并帮助我们改进本书的后续版本。如果您发现任何错误,请打开http://www.packtpub.com/submit-errata网页,选择相应图书,单击勘误表的提交表单链接,输入勘误表的详细信息。一旦您的勘误经过验证,我们将接受您提交的内容,并将勘误上传到网站,或追加到该题目现有勘误表的下面。

若想查看之前提交的勘误表,请转到https://www.packtpub.com/books/content/support,并在搜索栏中输入书名,所需信息将显示在勘误部分的下方。

盗版

网络上的盗版问题是所有媒体一直面对的问题。在Packt,我们非常严肃认真地保护版权和许可。如果你在网络上发现有关作品的任何形式的盗版版本,请立即向我们提供网址或者网站名称,以便我们及时采取补救措施。

请通过copyright@packtpub.com与我们联系,并附上可疑盗版资料的链接。

衷心地感谢你帮助我们保护作者的权益以及我们为你带来宝贵知识的能力。

问题

如果您对本书的任何方面有任何问题,可以通过questions@packtpub.com与我们联系,我们会尽全力为你解决。

目录

相关技术

推荐用户