前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Matt Dowle 演讲节选(一)

Matt Dowle 演讲节选(一)

作者头像
用户7652506
发布2020-10-23 12:00:09
6380
发布2020-10-23 12:00:09
举报
文章被收录于专栏:大猫的R语言课堂

M

att Dowle 与 data.table

Matt:“老子在给世界上最大的金融机构打工,你竟然说 BUG 修复要等6个月?!”

S-PLUS 客服:“为什么你不试试 R 呢?”

说着一口伦敦音的 Matt Dowle 个子不高,方方正正的脸,第一眼看上去有点略显紧张的神经质,是那种在英剧中典型的面孔。虽然不像 Hadley Wickham (请大家猛戳大猫上期的《Hadley Wickham 采访节选》)那样多产(Hadley目前已经在CRAN上发布了40多个包了),但是 Matt 凭着自己的 data.table 包成为了 R 圈最有影响力的开源包作者之一。

(Matt 演讲照片,是不是有种英剧里出来的赶脚?)

data.table 是大猫认为最优秀的数据处理包,不管从语法还是性能上大猫认为都要比 dplyr 优秀。截至2016年12月30日,data.table 是 StackOverflow上有关 R 的第三大 tag,下面一共4912个帖子,而 dplyr 为4063。data.table 也是 github 中第八大受关注的 R 开源项目。此外,data.table是目前 RStudio CRAN 镜像中下载最多包。要知道 Hadley 可是 RStudio 的首席科学家,能在“敌方大本营”取得这样的认可实属不易。在实战中,data.table 获得了 Kaggle 排名第一的 Gilberto 的青睐,他的原话很直接—— data.table is COOL!!!

于本视频

本视频来自 YouTube,是 Matt Dowle 在 useR! 2014年洛杉矶会议上的演讲。在这段21分33秒的演讲中,Matt 回顾了自己在伦敦大投行的工作经历(雷曼兄弟以及所罗门兄弟)、自己与 R 的偶遇以及开发 data.table 的动机。演讲全程笑声不断,充分体现了腐国人一本正经说笑话的能力╮(╯▽╰)╭

访节选:初见 S-PLUS

1996年我本科毕业,拿到了数学和计算机的学位,开始在伦敦的雷曼兄弟工作(大投行啊!)当时我掌握的技能并不多:VB/EXCEL + Sybase SQL + Windows + Unix。1999年,我跳槽到伦敦的所罗门兄弟(也是当时最大的投行之一),在所罗门兄弟的第一天,我遇到了 S Poertry (R 的某个祖先)的作者 Patrick Burns——这个男人就是以后所有故事的起点。(别开脑洞!)

以下是我(Matt)和 Patrick (简称 Pat)的对话:

Pat:嗨我亲爱的Matt,我们这儿都在用 S-PLUS。

Matt:S-PLUS 是啥?

Pat:S-PLUS 可牛逼了!我现在就给你演示一下!

于是 Pat 当场输入了以下代码:

> DF <- data.frame(

A = letters[1:3],

B = c(1, 2, 3))

> DF

A B

1 a 1

2 b 3

3 c 5

Pat:我刚才输入了两列,每一列的长度都相同,但是可以是不同的数据类型!

Matt:所以说 data.frame 就像是 SQL 里面的 datatable 一样咯?

Pat:Yes!

Matt:棒极了。所以说,你不需要像在 SQL 里先用 CREATE TABLE 语句建立一个表然后再用 INSERT 语句插入数据咯?

Pat:没错,现在你可以一步搞定。

Matt:Show me more!

于是 Pat 又输入了以下代码:

> DF[2:3, ]

A B

2 b 3

3 c 5

Matt:WOW! 我不需要像在 SQL 里必须新建一列 row number 就可以完成对表格的提取了?

Pat:说的没错。行数已经存储在内存中了,这样一来时间序列分析就特别方便。

Matt:嗯……因吹斯听。所以我现在可以这样做咯?

Matt 说着输入了以下代码:

DF[2:3, sum(B)] # 3+5=8

Pat:啊亲爱的朋友,你不能这样做。

Matt:Why?

Pat:你必须要这样做

sum(DF[2:3, "B"])

Matt:OK,但为什么我刚才这样就不行呢?

Pat:因为不行。

Matt:为什么不行?Come on。

Pat:因为它就是不行!╮(╯▽╰)╭

Matt:那如果按照我刚才输入的代码,最终结果是什么呢?

Pat:什么也不是。

Matt 后来经过了多次尝试,返回的永远都是错误:

object "B" not found

Pat:我早和你说了,那样做不行,放弃挣扎吧年轻人。

Matt:我们能让 S-PLUS 改吗?(S-PLUS 当时是商业软件)

Pat:祝你好运。

访节选:初见 R (三年后)

有一天 S-PLUS 闪退了。我很确定这不是我代码的原因,而是 S-PLUS 的问题。

客服:你确定不是你自己 XJB 操作?

Matt:当然不是。来,我把代码给你,你自个儿运行一遍。

客服:嗯……你是对的。我们会修复的,谢谢反馈!

Matt:太棒了,什么时候?

客服: 下个版本出来我们第一时间修复。

Matt:呃……下个版本是什么时候?

客服:六个月后。

Matt:你们就不能推出一个快速补丁吗?

客服:不行,因为就你一个人出问题。

Matt:WTF?老子是所罗门的,属于花旗集团,老子在给世界上最大的金融机构打工!

客服:你说的没错,但出问题的还是只有你一个,Matt。

Matt:好吧。那你们能把代码发给我吗?我来修复它——我不要报酬,我只想让完成我的工作。

客服:很抱歉,我们不能这样做。律师说 No。

Matt:那你有什么别的建议吗?

客服:你说过 R 吗?

Matt:啥是 R ?

后来我下载了 R,在几乎没有任何改动的情况下把 S-PLUS 的代码粘贴了过去。代码的主要任务是生成许多随机资产组合,因此它包含一个很长的 for 循环。神奇的是,原来需要一个小时才完成的任务,R用一分钟就完成了。

我当时惊讶极了,仔细核对了一遍结果,发现是正确的。我后来才知道,原来早在12年前(这是2014年的演讲), R 已经大大提高了 for 循环的速度,并且把所有的数据都保存在内存中,而不是放在硬盘上。

更重要的是,R 在运行这段程序的时候不再闪退了。其实哪怕 R 出了问题,我也能修复它,因为我有了源代码!实在不行,我也能雇别人修复它。要知道,我是在花旗集团打工,花旗集团永远不缺牛逼的程序员。

总而言之,从那时开始我就不再用 S-PLUS 了。我不用再傻乎乎地等六个月,我也不用再在电话里试图说服别人要帮我推出快速补丁,我独立了!更重要的是,我有了那么多第三方开源包。

也是在那时,三年前的那个想法再次冒了出来:我能够让下面的代码在 R 中运行吗?

sum(DF[2:3, "B"])

(未完待续)

期预告

下期内容看大猫的论文进展速度 Orz……

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大猫的R语言课堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档