# Applying a function successively in R

**mages' blog**, 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.

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)orReduce(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)
```

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

**mages' blog**.

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.