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
= function(x, dates = TRUE) {
cal_mean = ncol(x) #calculate the number of columns
num_cols # num_cols=ifelse(dates==TRUE,num_cals-1,num_cals) lets use a list and a
# loop to refresh our concepts
= list() #creating an empty list
m_stocks
# 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)
= ifelse(dates == TRUE, 2, 1)
l = 1 #starting point in the list m_stocks
j for (i in l:num_cols) {
= mean(x[, i])
m_stocks[[j]] = j + 1
j
}names(m_stocks) = colnames(x[, l:num_cols])
return(m_stocks)
}
# lets call the function cal_mean (output not shown)
cal_mean(data_stocks, TRUE)
$MSFT
[1] 26.91177
$IBM
[1] 122.3303
$AAPL
[1] 207.7967
$MCD
[1] 58.95141
$PG
[1] 61.32512
$GOOG
[1] 469.9453
# lets call the function with no dates column
cal_mean(data_stocks[, 2:ncol(data_stocks)], FALSE)
$MSFT
[1] 26.91177
$IBM
[1] 122.3303
$AAPL
[1] 207.7967
$MCD
[1] 58.95141
$PG
[1] 61.32512
$GOOG
[1] 469.9453