R语言入门难、学不会?这本R语言编程指南解救你

2023-11-01 13:40

本文主要是介绍R语言入门难、学不会?这本R语言编程指南解救你,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

新书速递

 

导读:尽管R语言有很多令人沮丧的奇怪之处,但是R从本质上来说是一款十分适合数据科学的优雅而美丽的语言。

1

为什么选择R语言

如果刚刚接触R语言,你可能会问这门奇怪的语言有什么值得学习的。对于我来说,R语言最好的特性有下面几条:

 

  • R语言是免费、开源、跨平台的。所以如果使用R语言进行数据分析,每个人都可以很容易地复制它(重现分析过程),无论他们生活在哪里或赚多少钱。

  • R语言拥有一个多元化且热情的社区既有在线社区(例如#rstats twitter社区,https://twitter.com/search?q=%23rstats),也有面对面社区(例如许多R语言用户的聚会,https://www.meetup.com/topics/r-programming-language/)。有两个特别鼓舞人心的社区团体:rweekly时事通讯(https://rweekly.org),可以方便地获取R最新的消息;R-Ladies(http://r-ladies.org),为妇女和其他少数族裔性别提供了一个非常受欢迎的社区。

  • 大量可以用于统计建模、机器学习、可视化、数据导入与操作的添加包(package)可以供R使用。可能别人都已经做好了你正在尝试构建的任何模型或者图形,即使不能完全照搬,你也能从他们的工作中学到很多经验,从而对你的工作起到帮助作用。

  • 交流结果的强大工具。RMarkdown(https://rmarkdown.rstudio.com)可以非常容易地将结果输出成HTML、PDF、Word、PowerPoint演示文稿、dashboard等报告。Shiny(http://shiny.rstudio.com)可以帮你制作精美的交互式应用程序,而无须任何HTML或JavaScript知识。

  • RStudio是一种集成开发环境(http://www.rstudio.com/ide/),专门针对数据科学、交互式数据分析和统计编程的需求而设计。

  • 前沿的工具。统计学和机器学习领域的研究者在发表研究论文时,经常会同时发布一个相应的R添加包。这就意味着你可以马上获得最新的统计技术并可以迅速实施。

  • 对数据分析根深蒂固的支持。这包括很多特性,比如缺失值、数据框和向量化等。

  • 强大的函数式编程基础。函数式编程的思想非常适合应对数据科学的挑战。R语言是函数式编程,并且提供了有效函数式编程所需的许多原语。

  • RStudio公司(https://www.rstudio.com)通过向R用户团队销售专业产品来盈利,然后转身将其中的大部分资金投资到开源社区(RStudio有超过50%的软件工程师从事开源项目)。我之所以为RStudio工作,是因为我从根本上相信它的使命。

  • 强大的元编程(metaprogramming)工具。R语言的元编程功能可以让你写出简洁而神奇的函数,并为设计特定领域的语言(domain-specific language)(例如ggplot2、dplyr、data.table等)提供了出色的环境。

  • 可以与高性能编程语言(如C、Fortran和C++)连接。

 

当然R语言也不是完美的。R语言最大的挑战和机遇就是大多数用户都不是程序员。这就意味着:

  • 所看到的很多R代码都是在急于解决某个紧迫问题的情况下编写的。因此这些代码并不是非常简洁、高效或者易于理解。大多数用户不会修改他们的代码来克服这些缺点。

  • 与其他编程语言相比,R社区更注重结果而非过程。软件工程最佳实践的知识不够完整。例如,使用源代码控制或自动化测试的R程序员还不够多。

  • 元编程是一把双刃剑。有太多的R函数通过使用一些技巧来减少代码的输入量,由此造成的结果就是使代码变得很难理解,有些还会以意想不到的方式失败。

  • 不同作者贡献的各种R添加包之间经常会出现矛盾,甚至与R的基础包发生冲突。每次使用R语言时,都要面对它超过25年的进化史。由于需要记住很多特例,所以R语言的学习会比较困难。

  • R并不是速度很快的编程语言,尤其是写得很差的R代码运行起来会非常慢。R还非常耗费内存

 

从个人角度来看,我觉得这些挑战也为有经验的程序员创造了一个极大的机会,让他们可以对R语言和R社区产生深远而有益的影响。R用户确实应该写出高质量的代码,尤其是在进行可重复研究时,但是他们现在还不具有这样的能力。我希望本书不仅可以帮助更多的R用户成为R程序员,还非常鼓励正在使用其他语言的程序员对R语言做出贡献。

 

 

2

本书的目标读者

本书是针对两个互补的群体:

  • 想深入学习R语言、理解R语言如何运作并学习解决各种问题的新策略的中级R程序员。

  • 正在学习R语言,并想知道R语言为什么这样工作的其他语言的程序员。

 

要从本书获得最大收益,你需要编写大量的R语言或者其他语言的代码。你应该熟悉数据分析的基础知识(即数据的导入、操作和可视化),并且已经编写许多函数,同时熟悉CRAN软件包的安装和使用。

 

本书介于参考书(主要用于查找)与线性可读的书之间。这涉及一些权衡,因为在使材料保持一致的同时很难线性化材料,如果你已经熟悉特定的技术词汇,则更容易解释一些概念。本书尝试使用脚注和交叉引用来确保即使在你只阅读其中一章时仍然可以理解里面的内容。

 

3

通过本书你可以学到什么

我认为本书描述的这些技能都是高级R程序员应该掌握的:对基础知识的深刻理解以及广泛的词汇表,意味着你可以根据需要学习更多相关主题的知识。

 

读完本书之后,你将掌握以下内容:

 

  • 熟悉R的基础。你将理解复杂的数据类型和对它们进行运算的最佳方法。你将对函数如何工作、环境以及如何使用条件系统有深刻的了解。

  • 理解什么是函数式编程,以及为什么函数式编程是数据分析的有用工具。你将能快速地学习如何使用现有工具,以及如何在需要的时候创建函数。

  • 了解R丰富的面向对象系统。你将最熟悉S3,但同时也将了解S4和R6,知道在需要时可以在何处查找更多信息。

  • 欣赏元编程这把双刃剑。你将能在遵守原则的前提下使用tidy运算(tidy evalua-tion)来创建函数,从而减少代码的输入量并创建优雅的代码来表达重要的运算,还将理解元编程的危险并知道何时避免它。

  • 对于R中什么样的操作会很慢且耗费内存能够产生很好的直觉。你将知道如何使用分析来找到阻碍性能提高的瓶颈,还会学到足够多的C++知识,将很慢的R函数转换成非常快的C++程序。

 

4

第2版更新内容

  • 首部分增加三章新的内容:名字和取值、控制流、条件。

  • 全面介绍面向对象编程,涵盖S3、R6、S4,以及如何在它们中进行选择。

  • 更深入地介绍元编程,包括新的tidy评估框架。

  • 使用新的添加包,如rlang(http://rlang.r-lib.org)和purrr(http.//purrr.tidyverse.org/)进行函数式编程。添加包rlang为低级操作提供了简洁的接口。

5

作者简介

哈德利·威克汉姆(Hadley Wickham),RStudio首席科学家,斯坦福大学和奥克兰大学的兼职教授,并且是R基金会的成员。他是R添加包tidyverse(包含ggplot2和dplyr)的主要开发人员,这些R包旨在支持数据科学。他还是R for Data Science(与Garrett Grolemund 台著)、R Packages和ggplot2:Elegant Graphics for Data Analysis的作者。2019年,他获得了考普斯总统奖——国际统计学领域的奖项。

6

目录

第1章 绪论
1.1 为什么选择R语言
1.2 本书的目标读者
1.3 通过本书你可以学到什么
1.4 通过本书你将不能学到什么
1.5 元技术
1.6 推荐阅读
1.7 获取帮助
1.8 致谢
1.9 约定
1.10 声明

第一部分 基础知识
第2章 名字和取值
2.1 本章简介
2.2 绑定基础
2.3 复制后修改
2.4 对象大小
2.5 原位修改
2.6 解除绑定和垃圾回收
2.7 小测验答案
第3章 向量
3.1 本章简介
3.2 原子向量
3.3 属性
3.4 S3原子向量
3.5 列表
3.6 数据框和tibble
3.7 NULL
3.8 小测验答案
第4章 子集选取
4.1 本章简介
4.2 选择多个元素
4.3 选择一个元素
4.4 子集选取与赋值
4.5 应用
4.6 小测验答案
第5章 控制流
5.1 本章简介
5.2 选择
5.3 循环
5.4 小测验答案
第6章 函数
6.1 本章简介
6.2 函数基础
6.3 函数组合
6.4 词法作用域
6.5 惰性求值
6.6 参数
6.7 退出函数
6.8 函数形式
6.9 小测验答案
第7章 环境
7.1 本章简介
7.2 环境基础
7.3 环境递归
7.4 特殊环境
7.5 调用堆栈
7.6 模拟数据结构
7.7 小测验答案
第8章 条件
8.1 本章简介
8.2 信号条件
8.3 忽视条件
8.4 处理条件
8.5 自定义条件
8.6 应用
8.7 小测验答案

第二部分 函数式编程
第9章 泛函
9.1 本章简介
9.2 第一个泛函:map()
9.3 purrr风格
9.4 map变体
9.5 reduce系列
9.6 判断泛函
9.7 基础泛函
第10章 函数工厂
10.1 本章简介
10.2 工厂基础
10.3 图形工厂
10.4 统计工厂
10.5 函数工厂+泛函
第11章 函数运算符
11.1 本章简介
11.2 现有的函数运算符
11.3 案例学习:生成你自己的函数运算符

第三部分 面向对象编程
第12章 基础类型
12.1 本章简介
12.2 基础对象与OO对象
12.3 基础类型
第13章 S3
13.1 本章简介
13.2 基础
13.3 类
13.4 泛型和方法
13.5 对象风格
13.6 继承
13.7 分派细节
第14章 R6
14.1 本章简介
14.2 类和方法
14.3 控制访问
14.4 引用语义
14.5 为什么是R6
第15章 S4
15.1 本章简介
15.2 基础
15.3 类
15.4 泛型和方法
15.5 方法分派
15.6 S4和S3
第16章 权衡
16.1 本章简介
16.2 S4与S3
16.3 R6与S3
……

第四部分 元编程
第五部分 高级技术

上下滑动查看

点击链接了解详情并购买

更多精彩回顾

书讯 |9月书讯(下)| 开学季,读新书

书讯 |9月书讯(上)| 开学季,读新书

资讯 |TIOBE 9 月编程语言:C++ 突起、Java 流行度下降

上新 | 一本书带你吃透Nginx应用与运维
书单 | 开学季——计算机专业学生必读的10本畅销经典

干货 | 用户画像从0到100的构建思路

收藏 | 更新!更薄!更精华:《JavaScript编程精解》来了

视频 | 4min视频带你了解阿里B2B电商算法

赠书 |【第20期】实践深度学习?先接住这三板斧再说

点击阅读全文购买

这篇关于R语言入门难、学不会?这本R语言编程指南解救你的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/323373

相关文章

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

电脑密码怎么设置? 一文读懂电脑密码的详细指南

《电脑密码怎么设置?一文读懂电脑密码的详细指南》为了保护个人隐私和数据安全,设置电脑密码显得尤为重要,那么,如何在电脑上设置密码呢?详细请看下文介绍... 设置电脑密码是保护个人隐私、数据安全以及系统安全的重要措施,下面以Windows 11系统为例,跟大家分享一下设置电脑密码的具体办php法。Windo

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

基于Go语言实现一个压测工具

《基于Go语言实现一个压测工具》这篇文章主要为大家详细介绍了基于Go语言实现一个简单的压测工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理客户端模块Http客户端处理Grpc客户端处理Websocket客户端

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用