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

It is said that, in R, everything that happens is a function call. So, if we want to improve our ability to make things happen the way we want them to, maybe it’s worth getting very comfortable with how functions work in R.
In this exercise set, we’ll try to gain better fluency and deepen our understanding of the R logic by (mostly) writing some functions.
Solutions are available here.

Exercise 1
Write a function that calculates number a to the power of b, but let b have a default value of 2.

Exercise 2
Re-write the function from exercise 1 so that a has a default value of b+1 already from the formals (from the argument definition.)

Exercise 3
Write a function div() that checks if the first number divides the second.

Exercise 4
Write an infix function %div% that checks if the left-hand side divides the right-hand side. # Example 3 %div% 42 [1] TRUE 3 %div% 13 [1] FALSE 

Exercise 5
Write a function that changes the value of pi in the R global environment to whatever you specify as the argument. Note: it is not recommended to re-define the value of “pi” in a real-life R program.
 # Example pi [1] 3.141593 chpi(4) pi [1] 4 chpi("I like cats") pi [1] "I like cats" 

Exercise 6
Write an infix (binary) function that checks if the left hand side (lhs) is in the range between the maximum and minimum of the rhs.
 set.seed(1) rnorm(6) %betw% c(-1, 1) [1] TRUE TRUE TRUE FALSE TRUE TRUE 

Exercise 7
Write another infix operator that pastes two strings and uses it in a function that takes ellipsis. Now, call the function and feed it two strings and concatenate them to produce some text.

Exercise 8
What did you think about the example in exercise 3? What does the following code (from the book Advanced R) return?
 f2 <- function(x = z) { z <- 100 x } f2() 

Exercise 9
Write a function that creates a function analogous to the one from exercise 1 by feeding 2 as an argument. Note: this is not a typo.
 # Example of a function called power() powerof2 <- power(2) powerof2(3) [1] 9 

Exercise 10
Make a new names<- (replacement) function called names2<- that also allows you to update the names of data structures, except it forces the names it is given to all-lowercase.
 # Example x <- 3:4 names2(x) <- c("IMPORTANT", "For The CAT do NOT EAT") x important for the cat do not eat 3 4 

(Photo by Pascal)