# A Conversation with Hadley Wickham

**Yixuan's Blog - R**, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Dr. Hadley Wickham is the Chief Scientist of RStudio and Assistant Professor

of Statistics at Rice University. He is the developer of the famous R package`ggplot2`

for data visualization and the author of many other widely used packages like`plyr`

and`reshape2`

. On Sep 13, 2013 he gave a talk at Department of Statistics,

Purdue University, and later I (Yixuan) had a conversation with him (Hadley), talking

about his own experience and interest on data visualization, data tidying, R programming

and other related topics.

Below is the written record of our conversation, with a Chinese translation posted in

Capital of Statistics, the largest online community on Statistics in China.

**Yixuan:** Can you first tell us, how did you choose to enter the field of

Statistics and data science?

**Hadley:** I got my first degree from a medical school, and actually I was in the

half way to be a doctor (laugh). But I realized I didn’t want to be a

doctor, so I went back to what I enjoyed in high school which was computer

science and statistics. I really liked programming and statistics,

and then did PhD in the United States, choosing data visualization

and multivariate data analysis as my thesis topic.

**Yixuan:** How do you define data scientist compared to statistician?

**Hadley:** I think they are basically the same. Data scientists may mind more

about databases, more about programming, but basically they both

tried to do the same thing.

**Yixuan:** So it’s like that data scientists are more involved in data in practice?

**Hadley:** Yeah. Traditionally statistics focuses much on the mathematical side.

A mathematical background is as important as a programming background.

To some extent it doesn’t matter if you know the right thing to do but

you can’t actually tell the computer how to do it. But equally

it doesn’t matter if you can tell a computer what to do but you don’t

know what you are doing. (laugh)

**Yixuan:** Can you illustrate the most exciting thing and most challenging thing

in your work?

**Hadley:** The thing I’m most excited about now is the next version of

`ggplot2`

,

which is called `ggvis`

.

It goes around with graphics and interactivity.

I’m working on that with Winston Chang, who is also in RStudio.

Hopefully we can have something to show by the end of the year.

**Yixuan:** So that’s a long term plan for the `ggplot2`

?

**Hadley:** Yeah. Basically it is pretty obvious that for data visualization now

you want to be doing them on the web, because everyone has a web

browser. And another thing is that the people who spend the most time

making graphics in general very fast across every platform are the

browser makers. There is a lot of competition between Chrome

and Firefox, about who can be the faster. And a lot of that now is

making it possible to do interactive graphics and statistical graphics

really quickly, much more than you can do in the past. That is a really

important principle to make graphics and also to make it easy to add

interactivity to graphics. For example, you can add a slider that

automatically changes the bin of a histogram, or the span of a loess

smoother. So it’s pretty fun working on that.

**Yixuan:** What about the most challenging thing?

**Hadley:** Another thing I’m working on the moment is

`dplyr`

, which is the next

iteration of `plyr`

.

I have to learn a lot about how to write efficient

SQL. If you asked me two weeks ago about how much SQL I knew, maybe I

would say 75% of it. But now, after I’ve used it, I realize that I only

understand about 25% of it. It is much much richer and more complicated

than I realized. That’s both challenging and fun to learn it.

**Yixuan:** OK. So from my own point of view, previously you are most famous for

the `ggplot2`

package. And now we see you are paying more effort on some

data tidying tools like `plyr`

and `reshape2`

, and you also wrote some

tutorials about high performance computing using `Rcpp`

. So how are these

techniques related to each other? The data visualization, the computing,

and data tidying?

**Hadley:** What I’m interested in is how to make data analysis easy and fast. So

just look at how much time you spend doing each part of data analysis.

If you spend 8 hours doing data cleaning and data tidying, but 2 hours

doing modeling, then you want to make the process faster. Obviously

you try to figure out how to make data tidying and data cleaning

faster at this time. Just like my talk today, we may find that the two

bottlenecks are what you want to do, and how you tell the computer to

do that. A lot of my existing work, like `ggplot2`

, `plyr`

and `reshape2`

have

been more about how you make it easier to express what you want, not

how you make the computer fast.

Now it’s easier to do all these sort of things, and the bottleneck is

actually doing the computation. Now I’m trying to learn how to write

fast code, how to write efficient R code, and how to connect to C++ to

achieve more speed. It’s a kind of process to keep going around. If

the bottleneck is here, then I go to fix this one. Now it takes less

time, and the bottleneck shifts over there, then I work on that

problem.

**Yixuan:** So you are trying to reduce both the time in describing data, and also

the time in computing part.

**Hadley:** Right. And another thing I’m interested in is generally …

I know I cannot write every R package that people need, so how can I

make it easier for other people to write good R code, and to write R

packages?

**Yixuan:** That’s the `devtools`

?

**Hadley:** Yeah, just make it easier to make other people to use R and contribute.

**Yixuan:** Can you introduce your toolbox in data analysis, about the softwares

and languages you use?

**Hadley:** I’m now pretty much an RStudio user. I used to use Sublime Text in the

Mac, but I’ve anyway shifted in the last couple of months. Fow now

RStudio is just easier to get around functions. I’ve spent 90%

of my time inside R. My job is analyzing data, and I’m also trying to

figure out like “what do I think people are trying to do”, “what are

people struggling with”, “how can I make it easier to express in R”,

and “how can I make the code more efficient”. So I still write mostly

in R, but if I discover bottleneck, then I may write C++ to make it

faster. The challenge is that you can write the code much much faster,

but it takes much much longer time to write. If I make a mistake, it’s

likely to crash R, and you need to get started from the scratch,

a little bit annoying. But at least now, if R crashes, RStudio will

just restart R and keep going.

**Yixuan:** Many of the visitors of our website

are curious about the dynamic

graphics. They want to know whether you have any plan to integrate

for example R and the D3 library in the next generation of `ggplot2`

.

Any plan or progress about that?

**Hadley:** `ggvis`

works by generating Vega code,

and Vega is a library built on

top of D3. So `ggvis`

is very much like built on top of that, and also

supports dynamic and interactive graphics. I may show you a demo of

ggvis.

(Showing the demo)

**Yixuan:** Another major change of software development we can see these years

is that social coding becomes mroe popular. Many developers have a

Github account, for example. Do you think that will change the way we

develop R and related packages?

**Hadley:** I think so. Certainly I find that the time between creating a Github

repository and my first pull request is getting smaller and smaller.

Recently I created a new repository, and I didn’t tell anyone about

that. After four hours there was a pull request. I think one of the

really nice thing about social coding is that authors get motivated

because you can see other people not only using it but also caring

about it, which is really really cool. We’ve talked a little bit

about how we can make use of Gists.

One example is RPubs. That should be based

on Gist, so you can fork someone else’s work and add some

modification, and if they want they can pull the changes back – we have a lot

of ideas around that.

Another thing I was doing lately was trying to figure out the best way

of reading a file, and R just gave one answer. I wrote an R Markdown

document providing three methods, and then I did a little bit of

benchmarking to see which one is faster. I tweeted about it, and people

forked and suggested other ways which were even faster. That’s

a really good way to learn, like “here is my best effort, can you do

any better?” Any time when there are two people collaborating to write

a piece of code, it is almost always better than just one person.

**Yixuan:** And as the chief scientist in RStudio,

do you have any future plan for RStudio?

**Hadley:** I’m looking forward to the day when there are more scientists (laugh).

I think when we start making money, we will start investing on the top

of the R community. One thing that we would like to do is how to make

R as a language faster and more efficient.

I’m also really interested in statistical learning as a family of

modeling techniques, a kind of fitting them together very well and

forming a grammer of models. You can make a new model by joing things

together, just like the grammer of graphics by which you can come up

with a new graphic that is just a new arrangment of existing components.

I think that’s something that makes it easier to learn modeling.

For example, you can learn a linear model in this way, a random forest

in that way, and you can learn them in a unified framework.

Another thing I’d like to think is the Lasso-type method. In one of my

classes, I want to show that now you should always try stablized

regression, you should always try to do Lasso and the similar.

I think there are 13 packages that would do Lasso, and I tried them

all. But every single one of them broke for a different reason. For

example, it didn’t support missing values, it didn’t support

categorical variables, it didn’t do predictions and standard errors,

or it didn’t automatically find the lambda parameter. Maybe that’s

because the authors are more interested in the theoretical papers,

not in providing a tool that you can use in data analysis. So I want

to integrate them together to form a tool that is fast and works well.

**Yixuan:** For our team (Capital of Statistics),

we have translated your ggplot2 book,

and Winston’s R Graphics Cookbook is also ongoing. Can you introduce your next book,

if I’m correct, the Advanced R Programming?

**Hadley:** The goal of the Advanced R Programming is basically to help people

become better R programmers. Lots and lots of books are about how to

do statistics with R, but not many about programming in R. Matloff’s

Art of R Programming is a kind of

good basic and intermediate book,

and what I want to introduce are some of the features of the R

language that I think are really cool and powerful. To learn how to

use it you need to read a lot of documentation and I do a lot of

experiments to tell how things work. So I’m really interested in

helping people understand and write more efficient and also more

expressive code.

I think R has a reputation for being a horrible programming language,

but that’s not really true. I think the heart of R is really a

beautiful and elegant language. The majority of people using R are not

programmers, so there is really elegant core as well as very tedious

R code. I think R is like javascript. There is a book called

JavaScript: The Good Parts,

that tries to pull out that part.

The goal of my book is similar, not just telling people how to write

R in the elegant way, but also to make it easier for them to solve

problems, by introducing a little bit more the theory that underlies R.

**Yixuan:** The last question: what are your hobbies when you are not working?

**Hadley:** I like to cook. Recently I’ve been doing grilling, learning American

barbecue food. I also like to make cocktails.

**Yixuan:** OK. Thank you for the conversation!

(Hadley Wickham with his *ggplot2* book in Chinese translation)

**leave a comment**for the author, please follow the link and comment on their blog:

**Yixuan's Blog - R**.

R-bloggers.com offers

**daily e-mail updates**about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.