[This article was first published on

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

**R – William Doane**, 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.

Functions are first class objects in R. Functions establish closures also known in R as environments. So, you can use functions to create other functions in creative ways.

Here, I’ve written a function called `divisor`

that returns a function that checks whether a given input, `d`

, is evenly divisible by `number`

and if so, returns `string`

. Then I use `divisor`

to create a test for divisibility by 3 and another for divisibility by 5.

**Problem**: Given a range of positive, non-zero integers, output “Fizz” if the number is evenly divisible by 3, output “Buzz” if the number is evenly divisible by 5, and output “FizzBuzz” if the number is evenly divisible by both 3 and 5; otherwise, output the number.

**Solution**:

divisor <- function(number, string) { function(d) { if (d %% number == 0) string else "" } } mod3er <- divisor(3, "Fizz") mod5er <- divisor(5, "Buzz") fizzbuzz <- function(i) { res <- paste0(mod3er(i), mod5er(i)) ifelse(res == "", i, res) } sapply(1:100, fizzbuzz)

To

**leave a comment**for the author, please follow the link and comment on their blog:**R – William Doane**.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.