Functions in R Programming
Introduction
Functions are a fundamental part of R programming that allow you to encapsulate reusable blocks of code. This tutorial covers creating custom functions, using default arguments, and understanding scope.
1. Writing Custom Functions
Custom functions in R are created using the function keyword.
Syntax:
function_name <- function(arg1, arg2, ...) {
# Function body
return(value)
}
Example:
# Function to add two numbers
add_numbers <- function(a, b) {
result <- a + b
return(result)
}
# Call the function
add_numbers(5, 3)
2. Default Arguments
Default arguments allow you to specify default values for function parameters, which are used if no value is provided.
Example:
# Function with default arguments
greet <- function(name = "User") {
message <- paste("Hello,", name)
return(message)
}
# Call the function
print(greet()) # Uses default value
print(greet("Alice")) # Uses provided value
3. Scope in R
Scope determines where a variable can be accessed. Variables defined inside a function are local to that function, while variables defined outside are global.
Example:
# Global and local scope example
x <- 10 # Global variable
scope_example <- function() {
x <- 20 # Local variable
return(x)
}
print(x) # Prints global x
print(scope_example()) # Prints local x
print(x) # Global x remains unchanged
4. Returning Multiple Values
Functions in R can return multiple values using a list.
Example:
# Function to return multiple values
calculate <- function(a, b) {
sum <- a + b
product <- a * b
return(list(sum = sum, product = product))
}
# Call the function
result <- calculate(4, 5)
print(result$sum)
print(result$product)
5. Anonymous Functions
Anonymous functions are functions without a name, typically used for short operations.
Example:
# Anonymous function
squared <- (function(x) x^2)
# Call the function
print(squared(4))
Conclusion
Functions in R enable code reuse and better organization. By using custom functions, default arguments, and understanding scope, you can write more efficient and readable code.