Learn R – How to Define Function in R

This article represents code examples in relation with how to write function in R. Please feel free to comment/suggest if I missed to mention one or more important points. Also, sorry for the typos.

Following are the key points described later in this article:

  • Function Definition
  • Code Examples for Functions

 

How to Define Function

Function in R looks like following:

# Function definition
funcName <- function( a, b, c ) {
    return(v) # or simply v
}
# This is how a function is invoked
var1 <- funcName(x,y,x) 

In above code, funcName is the name of the function. a, b, c are parameters. v is return variable

Code Examples for Functions

In the examples below, following four functions are demonstrated:

  • Create an empty Data Frame
  • Add/Append a vector to the data frame
  • Search for a vector in the data frame
  • Print first n rows in the data frame
# Creates an empty Data Frame with two columns namely, Name and Age
# Return the newly created empty data frame with 0 row
createDF <- function() {
  df <- data.frame(name=character(), age=numeric(), stringsAsFactors=F)
  return(df)
}

# Add the vector, c, to the passed data frame, df
# Return the updated data frame
addToDF <- function( df, c) {
  df[nrow(df) + 1,] <- c
  return(df)
}

# Search the data frame for existence of values in vector cv
# Return true if found, else false
searchFromDF <- function( df, cv ) {
  found <- F
  for( i in 1:nrow(df) ) {
    if( df$name[i] == cv[1] && df$age[i] == cv[2] ) {
      found <- T
      break
    }
  }
  found
}

# Print first n rows of the dataframe
phead <- function(df, n) {
  for( i in 1:nrow(df)) {
    if( i < n+1) {
      cat(df[i,]$name,"\t",df[i,]$age,"\n")
    }
  }
}

Following is how the above functions would be invoked:

# Creates an empty data frame
df1 <- createDF()

# Add the vector to the the data frame
df1 <- addToDF(df1, c("Ajitesh", 38))
df1 <- addToDF(df1, c("Aiyana", 9))
df1 <- addToDF(df1, c("Anisha", 4))

# Prints True
searchFromDF(df1, c("Aiyana", 9))
# Prints False
searchFromDF(df1, c("Anisha", 41))

# Prints first 2 rows of the dataframe df1
phead(df1, 2)


 

Ajitesh Kumar

Ajitesh Kumar

I have been recently working in the area of Data analytics including Data Science and Machine Learning / Deep Learning. I am also passionate about different technologies including programming languages such as Java/JEE, Javascript, Python, R, Julia, etc, and technologies such as Blockchain, mobile computing, cloud-native technologies, application security, cloud computing platforms, big data, etc. I would love to connect with you on Linkedin. Check out my latest book titled as First Principles Thinking: Building winning products using first principles thinking.
Posted in Data Science. Tagged with .