Functions in R Programming
Functions in R Programming
Functions in R Programming
Programming
Functions are useful when you want to perform a certain task multiple times. A
function accepts input arguments and produces the output by executing valid R
commands that are inside the function.
In R Programming Language when you are creating a function the function name
and the file in which you are creating the function need not be the same and you
can have one or more function definitions in a single R file.
Types of function in R Language
The functions in R Language takes multiple input objects but returned only one
object as output, this is, however, not a limitation because you can create lists of
all the outputs which you want to create and once the list is created you can access
them into the elements of the list and get the answers which you want.
Let us consider this example to create a function “Rectangle” which takes
“length” and “width” of the rectangle and returns area and perimeter of that
rectangle. Since R Language can return only one object. Hence, create one object
which is a list that contains “area” and “perimeter” and return the list.
# A simple R function to calculate
# area and perimeter of a rectangle
Rectangle = function(length, width){
area = length * width
perimeter = 2 * (length + width)
# create an object called result which is
# a list of area and perimeter
result = list("Area" = area, "Perimeter" = perimeter)
return(result)
}
resultList = Rectangle(2, 3)
print(resultList["Area"])
print(resultList["Perimeter"])
Inline Functions in R Programming
Language
Sometimes creating an R script file, loading it, executing it is a lot of work when
you want to just create a very small function. So, what we can do in this kind of
situation is an inline function.
To create an inline function you have to use the function command with the
argument x and then the expression of the function.
# A simple R program to
# demonstrate the inline function
f = function(x) x^2*4+x/3
print(f(4))
print(f(-2))
print(0)
Passing arguments to Functions in R
Programming Language
There are several ways you can pass the arguments to the function:
Case 1: Generally in R, the arguments are passed to the function in the same order
as in the function definition.
Case 2: If you do not want to follow any order what you can do is you can pass
the arguments using the names of the arguments in any order.
Case 3: If the arguments are not passed the default values are used to execute the
function.
# A simple R program to demonstrate
# passing arguments to a function
Rectangle = function(length=5, width=4){
area = length * width
return(area)
}
# Case 1:
print(Rectangle(2, 3))
# Case 2:
print(Rectangle(width = 8, length = 4))
# Case 3:
print(Rectangle())
Lazy evaluations of Functions in R
Programming Language
In R the functions are executed in a lazy fashion. When we say lazy what it means
is if some arguments are missing the function is still executed as long as the
execution does not involve those arguments.
Example: In the function “Cylinder” given here. There are defined three-argument
“diameter”, “length” and “radius” in the function and the volume calculation does
not involve this argument “radius” in this calculation. Now, when you pass this
argument “diameter” and “length” even though you are not passing this “radius”
the function will still execute because this radius is not used in the calculations
inside the function.
# A simple R program to demonstrate
# Lazy evaluations of functions
Cylinder = function(diameter, length, radius ){
volume = pi*diameter^2*length/4
return(volume)
}
# This'll execute because this
# radius is not used in the
# calculations inside the function.
print(Cylinder(5, 10))
# A simple R program to demonstrate
# Lazy evaluations of functions
Cylinder = function(diameter, length, radius ){
volume = pi*diameter^2*length/4
print(radius)
return(volume)
}
# This'll throw an error
print(Cylinder(5, 10))
Function Arguments in R Programming
Default value in a function is a value that is not required to specify each time the
function is called. If the value is passed by the user, then the user-defined value is
used by the function otherwise, the default value is used. Below is an
implementation of function with default value.
# Function definition to check
# a is divisible by b or not.
# If b is not provided in function call,
# Then divisibility of a is checked with 3 as default
divisible <- function(a, b = 3){
if(a %% b == 0)
{
return(paste(a, "is divisible by", b))
}
else
{
return(paste(a, "is not divisible by", b))
}
}
# Function call
divisible(10, 5)
divisible(12)
Dots Argument
Dots argument (…) is also known as ellipsis which allows the function to take an
undefined number of arguments. It allows the function to take an arbitrary number
of arguments. Below is an example of a function with an arbitrary number of
arguments.
# Function definition
# Function is passed as argument
fun <- function(x, fun2){
return(fun2(x))
}
# sum is built-in function
fun(c(1:10), sum)
# mean is built-in function
fun(rnorm(50), mean)