## 3.2 Functions in R

In all research fields there are few statistical (or otherwise) calculations which are used frequently by the users, for example calculation of returns in finance research.

R provides the facility of creating specific functions to evaluate a set of arguments and return an output value which are stored as R objects.

The functions in R are created by the keyword \(\mathtt{function}\) which takes the following syntax.

\[\mathtt{function(arguments)}body\]

The arguments are the values/defaults/variables which are used in the body of the function to evaluate an expression.

The body of the function is enclosed in curly braces. The function is assigned to a named object and called by passing arguments to the object.

The following example illustrates by creating a function to calculate mean for all the columns in the data set \(\mathtt{data\_stocks}\)

```
# the following function takes 2 arguments, x a data frame, dates to indicate if
# there are dates in the first column
cal_mean = function(x, dates = TRUE) {
num_cols = ncol(x) #calculate the number of columns
# num_cols=ifelse(dates==TRUE,num_cals-1,num_cals) lets use a list and a loop to
# refresh our concepts
m_stocks = list() #creating an empty list
# use for loop assign the starting value based on the dates column,we skip dates
# column if they are present (dates are basically row names to more generalised
# version will be to check for row names)
l = ifelse(dates == TRUE, 2, 1)
j = 1 #starting point in the list m_stocks
for (i in l:num_cols) {
m_stocks[[j]] = mean(x[, i])
j = j + 1
}
names(m_stocks) = colnames(x[, l:num_cols])
return(m_stocks)
}
```

```
$MSFT
[1] 26.91177
$IBM
[1] 122.3303
$AAPL
[1] 207.7967
$MCD
[1] 58.95141
$PG
[1] 61.32512
$GOOG
[1] 469.9453
```

```
$MSFT
[1] 26.91177
$IBM
[1] 122.3303
$AAPL
[1] 207.7967
$MCD
[1] 58.95141
$PG
[1] 61.32512
$GOOG
[1] 469.9453
```