Many times, we will require our functions to do some processing and return the result. This is accomplished with the return()
function in R.
Syntax of return()
The syntax of the return()
function is:
return(expression)
Here, expression
is evaluated, and its value is stored as the result of the function.
The value specified in the return()
statement is passed as the output of the function.
Example of return()
Let us look at an example which will return whether a given number is positive, negative or zero.
check <- function(x) {
if (x > 0) {
result <- "Positive"
}
else if (x < 0) {
result <- "Negative"
}
else {
result <- "Zero"
}
return(result)
}
check(1)
check(-10)
check(0)
Output
[1] "Positive" [1] "Negative" [1] "Zero"
Functions without return()
If there are no explicit returns from a function, the value of the last evaluated expression is returned automatically in R.
For example, the following is equivalent to the above function.
check <- function(x) {
if (x > 0) {
result <- "Positive"
}
else if (x < 0) {
result <- "Negative"
}
else {
result <- "Zero"
}
result
}
We generally use explicit return()
functions to return a value immediately from a function.
If it is not the last statement of the function, it will prematurely end the function bringing the control to the place from which it was called.
check <- function(x) {
if (x>0) {
return("Positive")
}
else if (x<0) {
return("Negative")
}
else {
return("Zero")
}
}
In the above example, if x > 0
, the function immediately returns "Positive"
without evaluating the rest of the body.
Multiple Returns
The return()
function can return only a single object. If we want to return multiple values in R, we can use a list (or other objects) and return it.
Following is an example:
multi_return <- function() {
my_list <- list("color" = "red", "size" = 20, "shape" = "round")
return(my_list)
}
# call function multi_return() and assign the result to variable a
a <- multi_return()
a$color
a$size
a$shape
Output
[1] "red" [1] 20 [1]"round"
Here, the function multi_return()
creates a list object my_list
, assigns some values to its elements, and then returns the entire list as the output of the function.
The list contains three elements: "color"
with the value "red"
, "size"
with the value 20, and "shape"
with the value "round"
.
The multi_return()
function is called and its result is assigned to the variable a
.
Here,
a$color
- accesses the value of the"color"
elementa$size
- accesses the value of the"size"
elementa$shape
- accesses the value of the"shape"
element
Check out these examples to learn more: