When you need to do some computations multiple times, instead of writing the same code N number of times, a good practise is to write the code chunk once as a function and then call the function with a single line of code.
In this tutorial, we shall be covering all the aspects of creating a user defined function (UDF) in R.
Syntax:
function_name = function(parameter1,paramater2, ...) {
Do Something
}
Providing parameters in a function are optional.
Creating our first function:
A function can be used to print the statements. In the following code we are creating a function my_first_function which prints the statements.
my_first_function = function(){
print("This is my first function!")
}
Calling a function
To get the output of a function we need to call it as follows:
my_first_function()
Function inside a for loop
Sometimes we need to call the function repeatedly in a for loop.. For this we define the function outside the for loop and it is being called inside the for loop as follows:
for(i in 1:5){
my_first_function()
}
Functions returning an output
Functions also have the power to return an output.
Here, we are creating a function prod_function which takes two parameters : a and b, prints their values and returns their product as an output.
If we want functions to return an output we must use return statement.
prod_function = function(a,b){
print(paste0("a = ",a))
print(paste0("b = ",b))
return(a*b)
}
y =prod_function(2,3)
print(y)
Parameters take value in the order as they appear. In the following code, a takes values 1 to 4, while b = 2.
y = prod_function(1:4,2)
y
Switching the order of parameters:
If you want to switch the order of parameters then while calling the function you need to specify the names of parameters with the values.
In the following code, b takes values 1 to 4, while a = 2.
y = prod_function(b = 1:4,a = 2)
y
The ... parameter in a function:
In the following function, we are calculating mean of a vector:
mean_function = function(x){
return(mean(x))
}
abc = 1:10
mean_function(abc)
What if our vector contains an NA? Our output would be NA.
def = c(1:10,NA)
mean_function(def)
If we want to provide extra parameters while calling a function we need to specify ... parameter.
Here it means we can provide na.rm = T (which is our parameters in mean function) while calling our UDF.
mean_function = function(x,...){
return(mean(x,...))
}
mean_function(def,na.rm = T)
Comments