At the R in Finance conference Paul Teetor gave a fantastic talk about Fast(er) R Code. Paul mentioned the common higher-order function Reduce, which I hadn’t used before.

Reduce allows me to apply a function successively over a vector.

What does that mean? Well, if I would like to add up the figures 1 to 5, I could say: ```
```

`add <- function(x,y) x+y`

add(add(add(add(1,2),3),4),5)

or```
```

`Reduce(add, 1:5)`

```
```

Now this might not sound exciting, but `Reduce`

can be powerful. Here is an example with `googleVis`

. To merge two charts I use the function `gvisMerge`

, which takes two charts and wraps them up in an HTML table. Hence, to create a page with a line-, column- area- and bar chart I could use:

`pp <- gvisMerge(gvisMerge(gvisMerge(line, column), area), bar)`

or use `Reduce`

instead:

`pr <- Reduce(gvisMerge, list(line, column, area, bar))`

```
```

`library(googleVis)`

data(OpenClose)

ops <- list(legend='none', width=300, height=150)

line <- gvisLineChart(OpenClose, "Weekday", c("Open", "Close"),

options=ops)

column <- gvisColumnChart(OpenClose, "Weekday", c("Open", "Close"),

options=ops)

area <- gvisAreaChart(OpenClose, "Weekday", c("Open", "Close"),

options=ops)

bar <- gvisBarChart(OpenClose, "Weekday", c("Open", "Close"),

options=ops)

## Applying gvisMerge successively

pr <- Reduce(gvisMerge, list(line, column, area, bar))

plot(pr)

## Instead of

pp <- gvisMerge(gvisMerge(gvisMerge(line, column), area), bar)

```
```

*Related*

To

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

** mages' blog**.

R-bloggers.com offers

**daily e-mail updates** about

R news and

tutorials on topics such as: visualization (

ggplot2,

Boxplots,

maps,

animation), programming (

RStudio,

Sweave,

LaTeX,

SQL,

Eclipse,

git,

hadoop,

Web Scraping) statistics (

regression,

PCA,

time series,

trading) and more...

If you got this far, why not

__subscribe for updates__ from the site? Choose your flavor:

e-mail,

twitter,

RSS, or

facebook...

**Tags:** googleVis, R, Reduce, successively, Tutorials