R语言集大成者, Hadley Wicklem的 Advanced-R读书笔记。
你将从本书中得到什么?
这本书提供了我认为一个高级R程序员应该具备的知识:对基础知识的深刻理解加上广泛的词汇,这意味着你可以在需要的时候策略性地学习更多关于某个主题的知识。
读完这本书,你会:
- 熟悉r的基础。您将理解复杂的数据类型以及对它们执行操作的最佳方法。您将深入了解函数的工作原理,了解什么是环境,以及如何使用条件系统。
- 理解函数式编程的含义,以及为什么函数式编程对于数据科学来说是一个有用的工具。您将能够快速学习如何使用现有工具,并掌握在需要时创建自己的功能工具的知识。
- 了解R丰富的面向对象系统。您将最熟悉S3,但是您将知道S4和R6,以及在需要时从何处查找更多信息。
- 掌握元编程这把双刃剑。您将能够创建使用整洁的求值、节省输入并创建优雅的代码来表达重要操作的函数。您还将了解危险以及何时避免它。
- 对R中的哪些操作比较慢,哪些操作占用了大量内存有一个很好的直觉。您将知道如何使用分析来确定性能瓶颈,并且您将了解足够的c++来将慢的R函数转换为快速的c++等效函数。
如何获得帮助?
目前,当您遇到问题而无法确定是什么原因导致的问题时,有三个主要的场所可以获得帮助:
- RStudio社区、
- StackOverflow
- R-help邮件列表。
你可以在每个地方得到非常棒的帮助。在你发布第一个帖子之前,花点时间潜伏一下,了解一下社区的期望,这通常是个好主意。一些好的一般性建议:
- 确保您有最新版本的R和您遇到问题的包(或多个包)。您的问题可能是最近修复的bug的结果。
- 花一些时间创建一个可重现的示例,或reprex。这将帮助他人帮助您,并且通常会在不询问他人的情况下得到解决方案,因为在使问题重现的过程中,您通常会找到根本原因。我强烈推荐学习和使用reprex包。
- 如果你正在寻找解决这本书中的练习的具体帮助,Malte Grosser和Henning Bumann的解决方案可以在https://advanced-r-solutions.rbind.io上找到。
惯例 Conventions
- 在本书中,我使用
f()
表示函数,g
表示变量和函数参数,h/
表示路径。 - 较大的代码块混合了输入和输出。输出是注释的(#>),因此如果您有这本书的电子版,例如https://adv-r.hadley.nz/,您可以轻松地将示例复制并粘贴到r中。
- 许多示例使用随机数。这些可以通过
set.seed(1014)
实现,它会在每一章的开头自动执行。