### Introduction to User Defined Functions in R

One can create user defined functions in R Language easily. User-defined functions allow to write/create custom blocks of code to be reused throughout the analysis. The article presents some useful examples of how to write user defined functions in R Language. R language helps to create much more efficient and possibly elegant coding.

## Table of Contents

### Assigning Function to a Variable

**Example 1:** Create a simple function and assign the function to a variable name as we do with any other objects.

f <- function(x, y = 0){ z <- x + y z } x = rnorm(10) f(x + y)

### Regression Coefficients

**Example 2:** Given $n\times 1$ vector of $y$ and matrix of $X$ the $\hat{\beta}=E[X|y] = (X’X)^{-1}X’y$, where $(X’X)^{-1}$ is generalized invers of $X’X$.

Beta <- function(x, y){ X <- qr(x) qr.coef(X, y) } attach(mtcars) xmat = cbind(1, hp, wt) yvar = mpg regcoef <- Beta(xmat, yvar)

The `qr()`

function computes the QR decomposition of a matrix. The QR decomposition if used to solve the equation $Ax=b$ for a given matrix $A$, and vector $b$. It is very useful in computing regression coefficients and in applying Newton Raphson’s algorithm.

### Removing all Objects from globalenv

**Example 3:** Create a function capable of removing all objects from the globalenv.

clear <- function(env = globalenv() ){ obj = ls(envir = env) rm(list = obj, envir = env) }

The `clear()`

function removes all objects from a specified environment and seems to work correctly. However, the `clear()`

function detects also itself and as a result, it cannot be reused without redefining the function again.

The `clear()`

function can be improved to keep the function `clear()`

when all other objects are deleted.

clear <- function(env = globalenv()){ objects <- objects(env) objects <- objects[objects != "clear"] rm(list = objects, envir = env) invisible(NULL) }

### Computing Measure of Central Tendency

**Example 4:** Create a function that can compute some basic Measure of Central Tendency.

center = function(x, type){ switch(type, mean = mean(x), median = median(x), trimmed = mean(x, trim = 0.1)) } attach(airquality) center(Temp, "mean") # for calcualtion of mean center(Temp, "median") # for calculation of median center(Temp, "trimmed") # for calculation of trimmed mean

Note that the user-defined functions in R can incorporate conditional statements, loops, and other functionalities to perform more advanced tasks. They can also have default parameter values for added flexibility.