有哪些很好玩而且逃避虽可耻但很有用10的 R 包

扫一扫下载手机客户端
扫描我,关注团购信息,享更多优惠
||网络安全
| | | | | | | | | | | | | | | |
||电子电工
汽车交通| | | | | | | | | |
||投资理财
| | | | | | | | | | | | | | | | |
| | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
||外语考试
| | | | | | | | |
| 视频教程|
R语言统计之都创始人谢益辉 统计之都理事会主席冯凌秉作序推荐
定价:¥49.00
校园优惠价:¥39.20 (80折)
促销活动:
商品已成功飞到您的手机啦!快登录手机站看看吧!
下载客户端
> 微信关注“互动出版网”,便捷查询订单,更多惊喜天天有
ISBN:5上架时间:出版日期:2016 年8月开本:16开版次:1-1
所属分类:
  从R包的使用者晋升为R包的开发者,从本书开始。本书由R社区最有影响力的开发者,ggplot2、plyr等诸多知名R包开发者Hadley Wickham执笔,展示R包开发哲学。书中详细介绍了如何将可重用的R函数、示例数据以及文档一起打包,以便与他人分享代码、节省开发时间、组织数据分析,尽可能让工作自动化。?学习R包最有用的组件,包括使用指南和单元测试?利用devtools自动执行任务?掌握良好编码风格的技巧,比如如何把函数组织成文件?使用devtools简化开发流程?发现提交包到CRAN的最佳途径
本书是一本开发理念与开发实例相结合的实用指南,主要内容包括:R包基础知识介绍,包的基本结构和可能形式,R 代码,包的元数据,对象文档,长格式文档,数据,命名空间,编译过的代码,Git和GitHub,发布包,等等。其目的是教会你如何开发包,让你可以开发自己的包,而不只是使用别人的包,进而从R 包的使用者蜕变成R包的开发者。
本书适合所有对R 语言感兴趣的人阅读参考。
Hadley Wickham
RStudio的首席科学家,莱斯大学的助理教授,资深R社区成员,已开发了30多个R包。因在数据处理和可视化开发工具方面的卓越贡献,获得专为统计计算而设立的约翰?钱伯斯奖。
译者简介:
自由程序员,译者,独立博客――猎数博客――的博主。数学系毕业的技术爱好者,兴趣广泛,致力于学习和开发新的技术,以便高效地解决现实生活中的实际问题。深入的了解和交流,可以访问他的博客: http://www.bagualu.net。
中文版推荐序一   xi
中文版推荐序二   xiii
译者序   xv
前言   xvii
第一部分 入门
第1章 简介  2
1.1 开发理念  3
1.2 入门  3
1.3 约定  4
1.4 版本记录  5
第2章 包的结构  6
2.1 给包命名  6
2.1.1 命名的要求  6
2.1.2 命名的策略  6
2.2 创建一个包  7
2.3 RStudio 项目  9
2.4 什么是包  12
2.4.1 源码包  12
2.4.2 压缩包  12
2.4.3 二进制包  13
  译者序
  R 语言是一门因统计而生的语言,长于数据处理。R 语言是基于向量的,也就是说,如果你随便定义一个a=1,实际上是定义了一个长度为1 的向量,而不是其他语言中通常的一个简单变量。以向量为基础使得R 语言对数据的处理具有天然的优势。比如,向量的加减乘除可以直接通过一个运算符完成,而不用像其他语言那样需要循环介入。这样一来,R语言就为开发人员省下了很多代码,而且也可以让开发人员直接在更高的层次上考虑问题,从而站在了一个更高的起点。
  R 语言的另一个特点是其开放性。R 语言可以通过R 包来扩展功能。因此,如果你觉得R哪里做得不够好,就可以开发一个包来改善它,让R 变成你想要的样子。实际上,R 现在有8300 多个包可用,其中包括数据访问、统计、可视化、机器学习、自然语言处理等各种包。这些包的开发者都是活跃在统计、数据处理和机器学习前沿的著名教授和学者。如果说R 基于向量的特性让R 开发者站在了一个相对高的起点,那么经过R 包扩展的R 则让R 开发者一跃而起,站到了统计、数据处理及机器学习的最前沿。
  现在R 包的开发依然处在一个活跃的时期,R 包的数量在不断增加。在这些R 包开发者中,最著名的一位就是本书的作者Hadley Wickham。我曾经做过一个统计,也就是简单地以每个包被别的包引用的次数作为这个包的影响因子,然后累加每个作者所开发的包的影响因子,进而得到每个作者的影响因子。这样统计出来的结果显示,Hadley 的影响因子遥遥领先于所有其他的开发者,是R 社区无可争议的、最有影响力的开发者。1
  Hadley 开发了ggplot2 绘图包,使得R 语言绘制的各种统计图优雅美丽。他还开发了plyr包,使数据的处理高效便捷。另外还有httr 包可用来快速地访问网络,stringr 包用来对字符串进行处理。可以毫不夸张地说,Hadley 重新定义了R,给了R 语言新的生命。
  除了开发上面这些著名的R 包以外,Hadley 还开发了一套R 包的开发工具,重新定义了R包的开发流程。正是这些高效的开发工具,使他成为了一名多产的开发者。这本书将会向你详细地展示如何使用这些工具包来开发自己的R 包。
  注1:参考http://www.bagualu.net/wordpress/archives/6210 。
  这些开发工具包括devtools、roxygen2、testthat 和knitr。其中devtools 用来做开发过程中的一些基础工作,比如新建、编译、打包、发布等。roxygen2 包用来生成R 包的文档,处理导入导出等问题。testthat 用来构建测试。最后的knitr 则是一个动态文档生成工具,主要用来生成包的使用指南等。其中knitr 包不是Hadley 开发的,而是他在RStudio 的同事,一个中国人――谢益辉――开发的。这个包的出现使得R 语言华丽变身,成为一个动态文档生成的利器。这本书基本上是写给程序员的。正如书中所说,就算你不打算把自己的包发布出去给别人用,R 包开发也很有用,因为它可以让你很方便地把某些功能集中在一起,以便调用。书中有两部分的内容除了用于R 包开发以外,还可以有其他更加广泛的应用:一是关于使用knitr 和R Markdown 生成动态文档的方法,另一个是关于GitHub 的使用。动态文档生成不仅仅能够让你高效地构建R 的说明文档,还可以制作其他各类文档,它便于在文档中插入图片和表格,是一个提高写作效率的好工具。关于GitHub,书中花了不少篇幅进行了介绍,说明GitHub 在开发中的重要作用,当然这不仅仅是针对R 包开发的,对于其他开发,它一样有用。这本书的英文版托管在作者的GitHub 上,直到现在仍在不断地更新。本书的译文是基于其中的一个版本。因此,可能书中有些内容已经更新过了,但是译文的内容却没有反应出来。要想了解最新的内容,可以查看本书在GitHub 上的版本:/hadley/rpkgs。这本书本身就是使用R 语言的knitr 等包动态生成的。因此,尝试从本书的源码来生成该书的pdf 文档本身就是一个不错的R 语言实践。最后,希望本书的读者能够很方便地创建或者发布自己的R 包,为R 语言社区做出自己的贡献。你也可以像Hadley 那样,通过优秀的R 包让R 变得更加好用。
  本书内容
  本书将引导你从R 包的使用者变成R 包的开发者。在第1 章“简介”中,你将了解为什么掌握这项技能如此重要,以及为什么它比你想象的容易。接下来,在第2 章“包的结构”中,你将了解包的基本结构和它可能的形式。后续章节将详细介绍每个组件。它们基本上按照重要性的顺序进行组织。
  ? 第3 章,R 代码
  最重要的目录是R/,里面放着你的R 代码。只含这个目录的包也是个有用的包。(事实上,如果这本书你只读到这一章,仍然能学到一些有用的新技能。)
  ? 第4 章,包的元数据
  DESCRIPTION 文件描述你的包需要依赖什么来工作。如果要分享你的包,也会用DESCRIPTION 文件来描述它的功能,谁可以使用它(许可证),以及如果包出了问题该和谁联系。
  ? 第5 章,对象文档
  如果你想要别人(包括“未来的你”)了解如何使用包中的函数,就需要在包中提供文档。我会告诉你怎么使用roxygen2 来为你的函数添加说明文档。我推荐roxygen2 是因为它让你在写代码和文档的同时,能够持续生成R 标准格式的文档。
  ? 第6 章,使用指南:长篇文档
  函数文档描述了包中每个函数的细节。使用指南是包的整体描述,它们是长篇文档,说明了如何结合使用包中的各个部分来解决实际问题。我会向你展示如何使用RMarkdown 和knitr,以最小的工作量来创建一个使用指南。
  ? 第7 章,测试
  为了确保你的包像设计的那样正常工作(并且在进行修改的时候持续工作),编写单元测试是很重要的。单元测试定义了正确的行为,并在某些功能失败的时候提醒你。在这一章,我将教你如何使用testthat 包,将你正在做的那些非正式的交互测试转变为正式的自动化测试。
  ? 第8 章,命名空间
  为了和其他的包很好地协作,你的包需要定义它可以输出什么函数供其他包使用,以及它需要使用其他包的什么函数。这是NAMESPACE 文件的工作,我会告诉你如何使用roxygen2 来生成它。NAMESPACE 是R 包开发中一个更具挑战性的部分,但如果想让你的包可靠地工作,掌握它是至关重要的。
  ? 第9 章,外部数据
  data/ 目录允许你在包中包含数据。你可能会用这种方式在包中捆绑数据,以便用户更方便地访问,又或者只是用来在你的文档中提供令人信服的例子。
  ? 第10 章,编译过的代码
  R 代码是为提高人类的效率而设计的,而不是计算机的效率,所以如果你手边有一个工具能让你编写快速的代码,那将是很有用的。src/ 目录可以让你引入快速运行的、编译好的C 和C++ 代码,来解决你的包中的性能瓶颈。
  ? 第11 章,安装文件
  中文版推荐序一
  开发R 包的传统参考文档是官方的手册Writing R Extensions,但好码农和好作者之间的交集通常比较小,官方文档追求的是严谨和正确,不免要牺牲可读性,所以读起来枯燥费解。《R 包开发》一书虽非官方文档,但原作者Hadley 大人在开发R 包方面的成就之大,足以证明他提倡的开发R 包的方法之有效。
  我个人最早受益的就是roxygen。我的第一个R 包是animation 包,干劲十足地开发了两年之后,感觉写代码有趣,但写文档实在太麻烦,一度想尥蹶子不干了。幸好roxygen 从2008 年的Google 编程夏令营中诞生了。它让我突然喜欢上了写帮助文档,下面敲代码,上面立刻敲上文档,再也不用在两个文件中切来切去,真是感觉浑身舒畅。其实roxgyen的第一个版本有很多缺陷,尤其是速度慢。我忍了两年,终于忍到Hadley 大人操起键盘把这个包重写了一遍,于是再次感觉写起包来通体舒畅(码农何时该忍、何时该重新发明轮子,实在是一个不好把握的问题)。世上有很多障碍只是人为制造的,无论是生活中还是技术上,总是有一些让你重复虚耗精力的事情。把码农从重复劳动和技术细节中解放出来专心写代码(如roxygen、Markdown、GitHub、Travis CI),我觉得就是善莫大焉了。
  普通码农可能会感觉:“啊,写包?好像很厉害的样子,那是我能干的事?”这是不必要的担心。当你拿到这本书一看目录,代码、文档、使用指南、测试、命名空间、数据、编译型代码,好多要学的内容!于是嘤咛一声昏过去了。对于一本书,它自然要把内容覆盖全面。但作为一个读者或开发者,并不是所有的内容都需要你去了解或掌握。有些内容你了解十分之一可能就足够用了。例如,并不是所有人都需要写编译型的代码(C、C++等),所以这一章也许可以完全跳过。加上RStudio 业界良心,新手可以直接从RStudio 中用点菜单的方式创建一个包的框架,上手实在是简单得不能再简单了。如作者所说,就算你的代码不是开发给别人用的,用R 包的方式组织代码也有无穷的益处。在码农的世界里,“别人”这个词有不一样的含义,很多时候那个“别人”就是三个月之后的自己。如果你当初就是为了完成任务写一堆混乱的R 代码,没文档、没测试。过三个月你再来看,必然给自己一个“人干事?!”的评价,变身双子座,感觉自己和自己的距离好遥远。人无远虑必有近忧,所以写包吧,少年。我自己有一个极简的R 包范例,感兴趣的读者可以参考一下,它包含了R 包的多数常用组成部分:/yihui/rmini。
  最后,我也想提醒读者,没必要完全遵守别人的开发习惯。了解一下别人怎么做以及为什么那样做,然后找一条适合自己的路就好了。比如,我个人就不用testthat 作测试工具。我觉得我很熟悉R 自己的语法,不想学一套新的“expect_ 啥啥”的语法,于是我自己弄了一个testit 包,就一两个函数,我觉得就足够自己使用了。
  从翻译角度来看,由于中西文化差异,不可避免地会有些术语难以找到合适的文字描述,少数词语如果不知道背后的英文术语的含义可能不容易理解(例如,啥叫“缓存无效”)。但总体来说,我觉得本书的文字比较流畅(我的采样只包含前5 章),同时我也很期待国内能出现更多本土作者的中文R 作品。讲真啊,我认为中文的表现力比英文不知道要高到哪里去了(傲娇脸)。
  谢益辉
  统计之都创始人 于奥马哈
  中文版推荐序二
  Hadley Wickham 最近的两本书,Advanced R 和R Packages,是出版界关于R 语言图书的两本新宠。作者本人在R 语言界的巨大贡献与非凡影响力,该书写作过程和形式的特殊性,以及该书在内容上的新颖性和全面性,使其必将成为无数R 语言使用者和R 包开发者的案头经典。从写作过程和形式上来说,这两本书都是开源的。Hadley 从一开始就把写书的全过程放在了GitHub 上,世界上任何一个角落的人都可以查看最新的写作进度,提供素材,修正拼写错误,提供建议等。因此,不同于传统的出版书籍,这本书在出版之前就已经被很多人提前“试读”。在整合了很多人的贡献之后,无论在行文上还是内容上,其质量都堪称典范。即便在付梓之后,本书仍然保持着“开源”的状态,这体现了作者本人和出版商对书籍质量的高度自信以及博大的分享精神。
  无需赘言,由Hadley 本人来告诉大家如何进行R 包的开发应该是再合适不过了,而这本《R 包开发》正是Hadley 十几年来R 包开发的经验总结。关于R 包开发,R 官方的WritingR Extensions 总是让人望而生畏,其他可以获取的零散资料也大都有失全面性,而本书应该是目前仅有的全面讲述R 包开发工作的著作。这本书的讲授方式依然是Hadley 一贯的风格――真诚、细致、娓娓道来,因此读起来十分畅快。从内容上来说,本书涉及了R 包开发过程中的方方面面,包括R 包结构介绍、对象文档和长文档的写作、编写测试、理解命名空间、外部数据和编译代码的处理、R 包检查与发布流程与细节以及Git 和GitHub 的使用等,并且深度整合了RStudio 的使用。
  我个人从2013 年左右就开始跟踪本书在GitHub 上的写作项目,并深深地被这书的内容吸引了。很高兴能在2015 年看到该书英文版的正式出版,图灵公司也在很快的时间内引入译著,这对国内的广大R 语言使用者和R 包开发者来说是一大福音。无论你开发R 包的目的是为自己所用,还是分享给大众,这本书都值得仔细一读。
  冯凌秉
  统计之都理事会主席,《R 语言入门与实践》《数据科学实战》译者
  2016 年7 月1 日于江西财经大学蛟桥园
  “这本书是使用R语言构建高质量软件的实用指南。任何想要更上一层楼的R程序员都应该好好地读一读这本书。”――Wes McKinney,pandas创建者
  “作者Hadley大人在开发R包方面的成就之大,足以证明他提倡的开发R包的方法之有效。”――谢益辉,统计之都创始人
  “本书应该是目前仅有的全面讲述R包开发工作的著作……涉及了R包开发过程中的方方面面,包括R包结构介绍、对象文档和长文档的写作、编写测试、理解命名空间、外部数据和编译代码的处理、R包检查和发布流程与细节以及Git和GitHub的使用等,并深度整合了RStudio的使用。”――冯凌秉,统计之都理事会主席
  “Hadley出手,必属精品。这本书堪称R包开发的圣经。”――魏太云,统计之都理事会成员,corrplot作者
  第1 章:简介
  在R 中,可分享代码的基本单位是包。包把代码、数据、文档和测试整合在一起,很容易与人分享。截至2015 年1 月,在R 包的公共发布网站CRAN(Comprehensive R ArchiveNetwork)上有6000 多个包可用。拥有大量的可用包,是R 如此成功的原因之一:很可能有人已经解决了你正在解决的问题,而你可以通过下载他们的包从他们的工作中受益。如果你正在读这本书,就应该已经知道如何使用包了。? 从CRAN 安装包: install.packages("x")。? 在R 中使用包:library(x)。? 获取包的帮助:package?x 或help(package = "x")。
  本书的目的是教你如何开发包,以便你可以写出自己的包,而不只是使用别人的包。为什么要写一个包?一个令人信服的理由是,你想要与他人分享代码。把你的代码打成一个包,可以方便他人使用,因为他们像你一样也知道如何使用包。如果你的代码在包中,则任何R 用户都可以轻松地下载、安装和学习如何使用它。
  即使你从不分享你的代码,包也很有用。正如Hilary Parker 在其关于包的介绍(//writinganrpackagefromscratch/)中说到的:“严格说来,它不一定和代码分享有关(虽然这是一个额外的好处),它主要是节省你自己的时间。”把代码组织在一个包中会让你工作起来更容易,因为包有一些通用的约定。比如,你把R 代码放在R/ 目录下,把测试放在tests/ 目录下,把数据放在data/ 目录下。这些约定是有益的,原因如下。? 它们能节省你的时间
  你不必考虑组织一个项目的最好方法,只要按照模板来就可以了。? 标准化的规范带来标准化的工具
  如果你遵循R 包的约定,可以免费获得许多工具。
  正如Robert M. Flight 在他的一系列博客文章(http://rmflight.github.io/posts/2014/07/analyses_as_packages.html)中谈到的,你甚至可以使用包来组织你的数据分析。
  1.1开发理念
  本书支持了我的包开发理念:任何可以自动化的都应该自动化。把手动工作量降到最小。尽量利用函数来做所有可能的事情。目标是让你将时间用于思考你想要包做什么,而不是包结构的各种细节。
  这一理念主要是通过devtools 包来实现的,这是我写的一套R 函数,主要用来自动化一些常见的开发任务。devtools 的目标是尽可能减少包开发的痛苦。它封装了这些年来我学到的关于包开发的最佳实践经验。devtools 让你避免犯许多潜在的错误,可以专注于感兴趣的问题而不是包开发这件事。
  devtools 携手RStudio,我相信这对大多数R 用户而言都是最好的开发环境。唯一真正的竞争对手是Emacs Speaks Statistics(ESS,http://ess.rproject.org/)。如果你愿意花时间去学习Emacs 并根据自己的需求来自定义它,将会在这个环境中获得很大回报。ESS 的历史可追溯到20 多年前(比R 还早!),现在仍然很活跃,本书中描述的许多工作流程也可以在其中找到。
  devtools 和RStudio 一起,让你无需关心包是怎么建立的这种低级细节。当你开始开发更多的包时,我强烈建议你去了解这些细节。有关包开发细节的最优秀的资源,是官方R 扩展开发手册(http://cran.rproject.org/doc/manuals/Rexts.html#CreatingRpackages)。然而,如果你不熟悉包的基础知识,是很难理解这本手册的。它很详尽,涵盖了每个可能的包组件,而不是像本书一样只关注最常见和最有用的组件。一旦你掌握了R 包的基础知识,想深入了解更多的知识,那么官方R 扩展开发手册将是一个很有用的资源。
  1.2入门
  开始的时候,要确保你有最新版本的R(至少是3.1.2,这是本书中代码使用的版本),然后运行下面的代码获得你将要用到的包:
  install.packages(c("devtools", "roxygen2", "testthat", "knitr"))
  确保你有最新版本的RStudio。可以通过下面的代码来检查自己的版本是否正确:
  install.packages("rstudioapi")
  rstudioapi::isAvailable("0.99.149")
  如果没有, 可能需要安装预览版(/products/rstudio/download/preview/)。这样你能获得最新和最好用的功能,只是略微增加了遇到bug 的机会。
  如果你想跟上devtools 的开发进展,可以使用下面的代码来访问我正在开发的新功能:devtools::install_github("hadley/devtools")
系列图书推荐 ¥79.00¥59.25
同类热销商品¥35.00¥24.50
订单处理配送
北京奥维博世图书发行有限公司 china-pub,All Rights Reserved

我要回帖

更多关于 逃避可耻但是很有用 的文章

 

随机推荐