上
期回顾
“
采访者:“你平时生活那么邋遢还好意思把自己的包取名 tidy-verse?”
Hadley (羞涩脸):“那总比别人叫他们 Hadley-verse好吧!” ╮(╯▽╰)╭
”
上期讲到采访者——Hadley Wickham的姐姐Charlotte Wickham——吐槽Hadley平时生活那么邋遢,结果却给自己的包取名为tidy-verse。Hadley不好意思的说自己的电脑倒是挺tidy的。今天的节选将继续上期两人对于tidy-verse包的讨论。
采
访节选:你最喜欢的tidyverse包?
“
你最喜欢的tidyverse包?
”
呃……我想最喜欢的还是purrr吧(大猫:DataCamp上有专门关于purrr的课程,是由采访者Charlotte Wickham讲授的),因为那个logo很酷,而且我很喜欢画这个logo的小姐姐(大猫:就是自己老姐啊!)purrr的设计目的并不是说要实现base R中无法实现的功能,只是base R中的这些底层函数使用起来太不方便而且容易出错,而purrr则用一种统一、安全的方式去重新打包了这些函数。但是话说回来,在我最近写的包里面,我都尽量不使用purrr。
(purrr包的logo)
“
等等,你为什么不愿意在你最近写的这个包里面用purrr呢?
”
啊……也许这并不是个特别好的理由,但我是这样想的。最近我不是在开发Bigrquiry这个包嘛(大猫:一个使用R从Google BigQuiry提取数据的API),我发现如果我用了purrr,那么我就很难避免不用dplyr,因为purrr严重依赖dplyr,而dplyr又依赖其他的东西。这就意味着用户为了安装你得包不得不安装很多其他用不到的东西,这可不是一件好事。而且purrr上个版本出了一个bug,当然前几个月已经修复了。但总的来说,最简单的避免麻烦的办法还是不用purrr。
采
访节选:你的编程知识哪儿学的?
“
你的第一个R项目?
”
啊我想想……应该是在奥克兰大学时写的吧。那是一个暑期研究项目,我尝试着用R来对MicroRate数据进行可视化(大猫:MicroRate是一家投资公司),在这个过程中我大量借助了lattice这个包。虽然现在看起来很稚嫩,但我最后还是把这个项目发布了(Hadley没说这里的发布是不是指发布到CRAN上)。当然,这个包现在已经凉了,你们就不要再去挖坟了,我也不会告诉你们它的名字的。
“
嗯……听起来很酷的样子。话说你当时学习编程——不论是R还是其他语言——有什么特别重要的导师(mentor)吗?他们是如何帮助你的?
”
嗯这是个好问题,我想想……(五秒钟后)我不认为自己有过什么“编程导师”,真的……(又过了五秒,认真脸)我在本科的时候为了拿学位修过一些编程的课,但全都是考完就忘的,我现在连上课老师的名字都想不起来了╮(╯▽╰)╭
“
Ok,我可还记得你的第一次编程是在一台MS-DOS上,那时你还小,按住了键盘上的”K”键不松手,于是屏幕就不停向下滚,你大呼小叫地把全家都叫过去看。所以我记忆中你的第一次编程是非常惹人厌的。不过,现在你写的代码倒是挺管用的,所以我也就不在此抱怨什么咯╮(╯▽╰)╭
”
等等,一定要说导师的话,我在RStudio的一个朋友倒是教了我很多C 以及Julia的知识,但除此以外,我绝大部分的编程知识都来自于阅读,包括大量书籍、博客、StackOverflow上的帖子等。SO上有些对R与数据科学很感兴趣并且颇有钻研的人,我从这些人的帖子中收获很多。
采
访节选:如何看待其他语言?
“
你因为自己在R中的成就而出名,那你平时还会用其他语言吗?
”
是的。我有时会写一点C ,我觉得自己C 的水平还行,不过我的Java写的特别糟。但是平时的工作我几乎全都用R,一方面因为R完全满足我现在的工作需要;另一方面我对R太熟悉了,用R解决问题要远远快于其他语言。有时候解决完一个问题,顺带一个R包就写好了,这样刚好可以造福他人。
“
tidyverse中的很多概念都被其他语言所借鉴了,那么tidyverse中有没有什么东西是借鉴其他语言的呢?
”
当然。很多tidyverse的概念都借鉴了Unix的设计哲学:你的每一件工具都只做好一件“小事”,如果你要完成一项复杂的工作,只需要把这些工具给组合起来。在下一个版本的dplyr中,我将引入“quasi-quotation”这个概念,它让用dplyr写函数比以往要方便许多。“quasi-quotation”实际上是个挺老的概念了,最初在Lisp社区中流行,并且也被Julia等语言采用。
事实上,对于R以外的语言,我写的很少,但读的很多。我总是希望找到其他语言的优势,并且把它们带到R中来。比如Pyhon,我就在想,Python中有什么东西可以拿到R里来呢?我看到在爬虫方面Python有一个非常好的框架——beautiful soup。说实话在那时R并不适合写爬虫,所以我就开发了“rvest”——把beautiful soup的理念用R实现出来的包,地地道道的R style哦。
采
访节选:学习其他语言的建议?
“
你刚才说你大量“阅读”其他语言,对于那些想学其他语言的人来说,你建议他们从什么开始阅读呢?
”
嗯……我不知道。至于我自己,则是阅读大量的博客(tons of blogs),以及在推特上follow别人。我现在已经几乎不看学术文章了,主要还是看博客吧,有些博客上面的东西特别有趣。事实上,数据科学的发展如此迅猛,以至于学术界和业界的人都争先恐后在博客上把自己知道的最酷的东西写出来。虽然有时候技术细节非常难懂,但我的目的也并非理解这些细节,而是掌握最新的技术动态(get the big idea),并试图将这些酷的东西应用到R中去。
采
访节选:你在RStudio的一天?
“
说说你在RStudio的角色?
”
呃……我是RStudio的首席科学家,虽然我至今都不知道那是什么意思。我的首要职责就是带领团队让R变得更棒(make R more awesome)。我们的主要产品是各种开源R包,同时我们也做各种R的普及与教学,包括博客和书籍等。虽然R在可视化以及建模两方面已经非常强大,但是有些地方还是Python更强一些,所以我们会想尽办法从Python地方学习好的东西,从而让R更加强大。
“
你的典型的一天?
”
一般而言,我会在早上写一些东西,主要的是书。然后我会开始处理邮件,我一天处理两次邮件,早九晚五各一次。早上九点查完邮件后我就会开始处理项目(work on projects)。有时候我会一整天都一个人工作,有的时候则会需要参加各种会议,和不同的人交流,比如今天╮(╯▽╰)╭
“
23333也许我现在要放你去工作了?Well,在这里仅代表我和DataCamp的所有学生向你表示感谢,感谢你和我们分享这一切。
”
也谢谢你,Charlotte。
(完)
下
期预告
下期内容继续看心情……╮(╯▽╰)╭