Difference between revisions of "R/C2/Functions-in-R/English"

From Script | Spoken-Tutorial
Jump to: navigation, search
(Created page with "'''Title of the script''': Functions in R '''Author''': Varshit Dubey (CoE Pune) and Sudhakar Kumar (IIT Bombay) '''Keywords''': R, RStudio, functions, user-defined function...")
 
 
(3 intermediate revisions by 2 users not shown)
Line 4: Line 4:
  
 
'''Keywords''': R, RStudio, functions, user-defined function, video tutorial
 
'''Keywords''': R, RStudio, functions, user-defined function, video tutorial
 
  
 
{| border =1
 
{| border =1
|'''Visual Cue’’’
+
|'''Visual Cue'''
|'''Narration’’’
+
|'''Narration'''
 
|-
 
|-
|| Show slide
+
|| Show Slide
  
 
Opening Slide
 
Opening Slide
|| Welcome to this tutorial on '''Functions in R. '''
+
|| Welcome to this tutorial on '''Functions in R'''.
 
|-  
 
|-  
 
|| Show slide
 
|| Show slide
  
Learning Objective
+
Learning Objectives
 
+
 
+
  
 
|| In this tutorial, we will learn:
 
|| In this tutorial, we will learn:
* Need for functions
+
* Need for '''functions'''
* How to create a user-defined function  
+
* How to create a '''user-defined function'''
* Scope of variables
+
* Scope of '''variables'''
 
+
  
 
|-  
 
|-  
||  
+
||Show Slide
 
+
 
+
Show slide
+
  
 
Pre-requisites
 
Pre-requisites
Line 38: Line 31:
 
|| To understand this tutorial, you should know,  
 
|| To understand this tutorial, you should know,  
 
* Basics of permutation and combination  
 
* Basics of permutation and combination  
* Basic data structures  
+
* Basic '''data structures'''
* Conditional statements
+
* '''Conditional statements'''
  
 
If not, please locate the relevant tutorials on '''R''' on this website.
 
If not, please locate the relevant tutorials on '''R''' on this website.
 
|-  
 
|-  
|| Show slide
+
|| Show Slide
  
 
System Specifications
 
System Specifications
 
|| This tutorial is recorded on
 
|| This tutorial is recorded on
* '''Ubuntu Linux '''OS version '''16.04'''
+
* '''Ubuntu Linux '''OS version 16.04
* '''R''' version '''3.4.4'''
+
* '''R''' version 3.4.4
* '''RStudio''' version '''1.1.463'''
+
* '''RStudio''' version 1.1.463
  
 
+
Install '''R''' version 3.2.0 or higher.  
 
+
Install '''R''' version '''3.2.0''' or higher.  
+
 
|-  
 
|-  
|| Show slide
+
|| Show Slide
  
 
Download Files
 
Download Files
 
|| For this tutorial, we will use
 
|| For this tutorial, we will use
 
* A '''script''' file '''myFunctions.R'''.
 
* A '''script''' file '''myFunctions.R'''.
 
 
  
 
Please download this file from the '''Code files''' link of this tutorial.  
 
Please download this file from the '''Code files''' link of this tutorial.  
Line 69: Line 58:
 
Highlight '''moviesData.csv '''and''' myFunctions.R '''in the folder '''functions'''
 
Highlight '''moviesData.csv '''and''' myFunctions.R '''in the folder '''functions'''
 
|| I have downloaded and moved this file to '''functions''' folder.  
 
|| I have downloaded and moved this file to '''functions''' folder.  
 
  
 
This folder is located in '''myProject''' folder on my '''Desktop'''.
 
This folder is located in '''myProject''' folder on my '''Desktop'''.
 
  
 
I have also set '''functions''' folder as my '''Working Directory.'''  
 
I have also set '''functions''' folder as my '''Working Directory.'''  
 
|-  
 
|-  
|| Show slide
+
|| Show Slide
  
 
Functions  
 
Functions  
|| * A function is a set of statements organized together to perform a specific task.  
+
||  
* R has a large number of built-in functions.  
+
* A '''function''' is a set of '''statements''' organized together to perform a specific task.  
* In spite of that, sometimes we need to define our own functions.  
+
* '''R''' has a large number of '''built-in functions'''.  
 
+
* In spite of that, sometimes we need to define our own '''functions'''.  
  
 
|-  
 
|-  
|| Show slide
+
|| Show Slide
  
 
Use-defined Functions  
 
Use-defined Functions  
|| * User-defined functions are specific to user’s requirements.  
+
||  
* Once created these functions can be used as the built-in functions.
+
* '''User-defined functions''' are specific to user’s requirements.  
 
+
* Once created these '''functions''' can be used as the '''built-in functions'''.
  
 
|-  
 
|-  
|| Show slide
+
|| Show Slide
  
User-defined functions  
+
'''User-defined functions'''
|| An '''R function '''is created by using the keyword '''function'''.  
+
|| An '''R function '''is created by using the '''keyword function'''.  
  
 
The syntax of an '''R function''' is as follows:
 
The syntax of an '''R function''' is as follows:
  
'''myFunc <- function(arguments){'''
+
'''myFun <- function(arguments){'''
  
 
'''Body '''
 
'''Body '''
Line 106: Line 93:
 
'''}'''
 
'''}'''
 
|-  
 
|-  
|| Show slide
+
|| Show Slide
  
 
User-defined functions  
 
User-defined functions  
 
|| The different parts of a '''function''' are:
 
|| The different parts of a '''function''' are:
 
* Name  
 
* Name  
* Arguments
+
* '''Arguments'''
* Body  
+
* '''Body'''
* Return Value
+
* Return value
  
 
|-  
 
|-  
Line 119: Line 106:
 
|| Let us switch to '''RStudio'''.
 
|| Let us switch to '''RStudio'''.
 
|-  
 
|-  
|| Highlight '''myFunctions.R''' in the '''Files '''window''' '''of '''RStudio '''
+
|| Highlight '''myFunctions.R''' in the '''Files '''window of '''RStudio '''
 
|| Open the '''script myFunctions.R '''in''' RStudio'''.  
 
|| Open the '''script myFunctions.R '''in''' RStudio'''.  
 
|-  
 
|-  
 
|| Highlight '''sampleVec''' in the '''Source''' window  
 
|| Highlight '''sampleVec''' in the '''Source''' window  
|| Here, we have declared a sample vector named '''sampleVec'''.  
+
|| Here, we have declared a sample '''vector''' named '''sampleVec'''.  
  
Let us find the '''summary''' of this vector by using the built-in function.  
+
Let us find the '''summary''' of this '''vector''' by using the '''built-in function'''.  
 
|-  
 
|-  
 
|| [RStudio]
 
|| [RStudio]
  
 
'''summary(sampleVec)'''
 
'''summary(sampleVec)'''
|| In the '''Source''' window, type the following command.  
+
|| In the '''Source''' window, type the following '''command'''.  
 
|-  
 
|-  
 
|| Highlight '''Run''' button in the '''Source''' window  
 
|| Highlight '''Run''' button in the '''Source''' window  
|| Save the '''script''' and run this script by clicking on the '''Source''' button.  
+
|| Save the '''script''' and '''run''' this script by clicking on the '''Source''' button.  
 
|-  
 
|-  
 
|| Highlight the output in the '''Console''' window  
 
|| Highlight the output in the '''Console''' window  
 
|| The '''summary''' of '''sampleVec''' is displayed.
 
|| The '''summary''' of '''sampleVec''' is displayed.
  
It includes '''median''', '''mean''', etc.  
+
It includes median, mean, etc.  
 
|-
 
|-
| | Highlight '''summary''' in the '''Source''' window  
+
|| Highlight '''summary''' in the '''Source''' window  
| | Similarly, '''R '''has many built-in functions to make our life easy.  
+
|| Similarly, '''R '''has many '''built-in functions''' to make our life easy.  
  
 
+
But we can always create a '''function''' of our own, depending on the need.  
But we can always create a function of our own, depending upon the need.  
+
 
|-
 
|-
| |  
+
||  
| | We will create a '''function''' that computes the '''permutation''' of two numbers.  
+
|| We will create a '''function''' that computes the '''permutation''' of two numbers.  
 
|-
 
|-
| | [RStudio]
+
|| [RStudio]
  
 
'''permutation <- function(a,b){'''
 
'''permutation <- function(a,b){'''
Line 156: Line 142:
  
 
'''}'''
 
'''}'''
| | In the '''Source''' window, type the following command.  
+
|| In the '''Source''' window, type the following '''command'''.  
 
|-
 
|-
| | Highlight '''permutation''' in the '''Source''' window  
+
|| Highlight '''permutation''' in the '''Source''' window  
| | Here, we have named our '''function''' as '''permutation'''.  
+
|| Here, we have named our '''function''' as '''permutation'''.  
 
|-
 
|-
| | Highlight '''function(a,b)''' in the '''Source''' window  
+
|| Highlight '''function(a,b)''' in the '''Source''' window  
| | Next, we have passed two values as arguments.  
+
|| Next, we have passed two values as '''arguments'''.  
 
|-
 
|-
| | Highlight '''factorial(a)/factorial(a-b) '''in the Source window  
+
|| Highlight '''factorial(a)/factorial(a-b) '''in the Source window  
| | Inside the '''function''', the definition of '''permutation''' has been written.  
+
|| Inside the '''function''', the definition of '''permutation''' has been written.  
 
|-
 
|-
| | Highlight '''Run''' button in the '''Source''' window  
+
|| Highlight '''Run''' button in the '''Source''' window  
| | Run the current line by pressing '''Ctrl+Enter''' keys simultaneously.
+
|| Run the current line by pressing '''Ctrl + Enter''' keys simultaneously.
 
|-
 
|-
| | Highlight '''permutation''' in the '''Source''' window
+
|| Highlight '''permutation''' in the '''Source''' window
| | Now, let us test this '''function''' to check whether it gives correct results.  
+
|| Now, let us test this '''function''' to check whether it gives correct results.  
 
+
  
 
First, we will calculate the '''permutation''' of 5 and 2.
 
First, we will calculate the '''permutation''' of 5 and 2.
 
|-
 
|-
| | [RStudio]
+
|| [RStudio]
  
 
'''permutation(5,2)'''
 
'''permutation(5,2)'''
| | In the '''Source''' window, type '''permutation''' and in parentheses 5 comma 2.  
+
|| In the '''Source''' window, type '''permutation''' and in parentheses 5 comma 2.  
 
|-
 
|-
| | Highlight '''Run''' button in the '''Source''' window  
+
|| Highlight '''Run''' button in the '''Source''' window  
| | Run the current line.  
+
|| '''Run''' the current line.  
 
|-  
 
|-  
 
|| Highlight the output in the '''Console''' window  
 
|| Highlight the output in the '''Console''' window  
 
|| The required value of 20 is displayed.  
 
|| The required value of 20 is displayed.  
 
  
 
Thus, our '''function''' has given the correct result.  
 
Thus, our '''function''' has given the correct result.  
 
|-  
 
|-  
 
|| Highlight '''function(a,b)''' in the '''Source''' window  
 
|| Highlight '''function(a,b)''' in the '''Source''' window  
|| While creating functions, the arguments are optional.  
+
|| While creating '''functions''', the '''arguments''' are optional.  
  
 
+
Let us create a '''function''' that does not take any '''arguments'''.  
Let us create a function that does not take any arguments.  
+
 
|-  
 
|-  
 
|| Cursor on the interface.
 
|| Cursor on the interface.
|| We will create a function named as '''votingEligibility'''.  
+
|| We will create a '''function''' named as '''votingEligibility'''.  
 
|-  
 
|-  
 
|| [RStudio]
 
|| [RStudio]
Line 216: Line 199:
  
 
'''}'''
 
'''}'''
|| In the '''Source''' window, type the following commands.  
+
|| In the '''Source''' window, type the following '''commands'''.  
 
+
 
+
  
 
|-  
 
|-  
 
|| Highlight the if condition in the function.
 
|| Highlight the if condition in the function.
|| This function''' '''should print a message whether an Indian citizen is eligible to vote or not.  
+
|| This '''function''' should print a message whether an Indian citizen is eligible to vote or not.  
 
+
  
 
Remember the minimum age for Indian citizens to vote is 18 years.
 
Remember the minimum age for Indian citizens to vote is 18 years.
 
 
  
 
|-  
 
|-  
 
|| Highlight '''function()''' in the '''Source''' window  
 
|| Highlight '''function()''' in the '''Source''' window  
|| Here, we have not passed any arguments.  
+
|| Here, we have not passed any '''arguments'''.  
 
|-  
 
|-  
 
|| Highlight '''readline '''in the '''Source''' window  
 
|| Highlight '''readline '''in the '''Source''' window  
|| '''readline''' function reads a line from the terminal in interactive use.
+
|| '''readline function''' reads a line from the '''terminal''' in interactive use.
 
|-
 
|-
| | Highlight '''Run''' button in the '''Source''' window  
+
|| Highlight '''Run''' button in the '''Source''' window  
| | Run this block of code to execute the function '''votingEligibility'''.  
+
|| '''Run''' this block of code to execute the '''function votingEligibility'''.  
 
|-
 
|-
| | Highlight '''votingEligibility '''in the '''Source''' window  
+
|| Highlight '''votingEligibility '''in the '''Source''' window  
| | Now, we will run this function to see whether it works.  
+
|| Now, we will run this '''function''' to see whether it works.  
 
|-
 
|-
| | [RStudio]
+
|| [RStudio]
  
 
'''votingEligibility()'''
 
'''votingEligibility()'''
| | In the '''Source''' window, type the following command.  
+
|| In the '''Source''' window, type the following '''command'''.  
  
 
+
Please note that we are not passing any '''arguments''' inside this '''function'''.  
Please note that we are not passing any arguments inside this function.  
+
 
|-
 
|-
| | Highlight '''Run''' button in the '''Source''' window  
+
|| Highlight '''Run''' button in the '''Source''' window  
| | Run the current line.  
+
|| '''Run''' the current line.  
 
|-
 
|-
| | Highlight '''Please enter your age:''' in the '''Console''' window  
+
|| Highlight '''Please enter your age:''' in the '''Console''' window  
| | We are asked to enter our age. Let us type 21 and press '''Enter'''.  
+
|| We are asked to enter our age. Let us type 21 and press '''Enter'''.  
 
|-
 
|-
| | Highlight the output in the '''Console''' window
+
|| Highlight the output in the '''Console''' window
| | We get a message, '''You can cast your vote'''.  
+
|| We get a message, '''You can cast your vote'''.  
 
|-
 
|-
| | Show slide
+
|| Show Slide
  
 
Example of a Function  
 
Example of a Function  
| | Now let us say we want to create a '''function''' '''sum_between_two''' such that  
+
|| Now let us say we want to create a '''function''' '''sum_between_two''' such that  
* It takes two natural numbers '''num1''' and '''num2 as its arguments'''.  
+
* It takes two natural numbers '''num1''' and '''num2''' as its '''arguments'''.  
 
* Then, it returns the sum of all numbers from '''num1''' to '''num2'''.  
 
* Then, it returns the sum of all numbers from '''num1''' to '''num2'''.  
* For example, if we pass 2 and 6 to the function '''sum_between_two''', it should return the value of 2 + 3 + 4 + 5 + 6.
+
* For example, if we pass 2 and 6 to the '''function sum_between_two''', it should return the value of 2 + 3 + 4 + 5 + 6.
 
+
  
 
|-
 
|-
| |  
+
||  
| | Let us switch back to '''RStudio'''.  
+
|| Let us switch back to '''RStudio'''.  
 
|-
 
|-
| | [RStudio]
+
|| [RStudio]
  
 
'''sum_between_two <- function(num1, num2){'''
 
'''sum_between_two <- function(num1, num2){'''
Line 285: Line 261:
  
 
'''}'''
 
'''}'''
| | In the '''Source''' window, type the following command.  
+
|| In the '''Source''' window, type the following '''command'''.  
 
|-
 
|-
| | Highlight '''sum_between_two''' in the '''Source''' window  
+
|| Highlight '''sum_between_two''' in the '''Source''' window  
| | We have named our function as '''sum_between_two.'''
+
|| We have named our '''function''' as '''sum_between_two.'''
 
|-
 
|-
| | Highlight '''function(num1, num2) '''in the '''Source''' window  
+
|| Highlight '''function(num1, num2) '''in the '''Source''' window  
| | Also, we have specified the two arguments '''num1 '''and '''num2. '''
+
|| Also, we have specified the two '''arguments num1 '''and '''num2. '''
 
|-
 
|-
| | Highlight '''result <- 0 '''in the '''Source''' window  
+
|| Highlight '''result <- 0 '''in the '''Source''' window  
| | Inside the function, we have initialized an object named '''result''' to store the sum.  
+
|| Inside the '''function''', we have initialized an object named '''result''' to store the sum.  
 
|-
 
|-
| | Highlight '''for (i in num1:num2) '''in the Source window  
+
|| Highlight '''for (i in num1:num2) '''in the Source window  
| | We have created a '''for''' loop which will increment the '''result '''at each iteration.
+
|| We have created a '''for loop''' which will increment the '''result '''at each iteration.
 
|-
 
|-
| | Highlight '''Run''' button in the '''Source''' window  
+
|| Highlight '''Run''' button in the '''Source''' window  
| | Run this block of code to execute the function.  
+
|| '''Run''' this block of code to execute the '''function'''.  
 
|-
 
|-
| | Highlight '''sum_between_two '''in the Source window  
+
|| Highlight '''sum_between_two '''in the Source window  
| | Now we test our function '''sum_between_two '''by running it with two arguments.  
+
|| Now we test our '''function sum_between_two '''by running it with two '''arguments'''.  
 
|-
 
|-
| | [RStudio]
+
|| [RStudio]
  
 
'''sum_between_two(2, 6)'''
 
'''sum_between_two(2, 6)'''
| | In the '''Source''' window, type the following command.  
+
|| In the '''Source''' window, type the following '''command'''.  
 
|-
 
|-
| | Highlight '''Run''' button in the '''Source''' window  
+
|| Highlight '''Run''' button in the '''Source''' window  
| | Run the current line.  
+
|| '''Run''' the current line.  
 
|-
 
|-
| | Highlight '''sum_between_two(2, 6)''' in the '''Console''' window  
+
|| Highlight '''sum_between_two(2, 6)''' in the '''Console''' window  
| | The '''function''' with arguments 2 and 6 was executed, but we got nothing as output.  
+
|| The '''function''' with '''arguments''' 2 and 6 was executed, but we got nothing as output.  
 
+
  
 
Let us investigate what went wrong.  
 
Let us investigate what went wrong.  
 
|-
 
|-
| | Highlight '''sum_between_two(2, 6)''' in the '''Console''' window  
+
|| Highlight '''sum_between_two(2, 6)''' in the '''Console''' window  
| | We know that our function got executed as we did not get any error after executing this line'''. '''
+
|| We know that our '''function''' got executed as we did not get any error after executing this line.
 
|-
 
|-
| | Highlight '''result <- result + i '''in the '''Source''' window  
+
|| Highlight '''result <- result + i '''in the '''Source''' window  
| | It means that the object '''result '''got incremented.  
+
|| It means that the object named '''result ''' got incremented.  
 
|-
 
|-
| | [RStudio]
+
|| [RStudio]
  
 
'''print(result)'''
 
'''print(result)'''
| | Now, we will check the value of the '''result'''.  
+
|| Now, we will check the value of the '''result'''.  
  
 
+
In the '''Source''' window, type the following '''command'''.  
In the '''Source''' window, type the following command.  
+
 
|-
 
|-
| | Highlight '''Run''' button in the '''Source''' window  
+
|| Highlight '''Run''' button in the '''Source''' window  
| | Run the current line.  
+
|| '''Run''' the current line.  
 
|-  
 
|-  
 
|| Highlight the output in the '''Console''' window  
 
|| Highlight the output in the '''Console''' window  
Line 340: Line 314:
 
|-  
 
|-  
 
|| Highlight the output in the '''Console''' window  
 
|| Highlight the output in the '''Console''' window  
|| To understand what went wrong, we need to learn a concept named as '''Scope. '''
+
|| To understand what went wrong, we need to learn a concept named as '''Scope'''.
 
|-  
 
|-  
|| Show slide
+
|| Show Slide
  
 
Scope of objects and variables  
 
Scope of objects and variables  
|| '''Scope '''is the term used to describe how objects and variables get defined within '''R'''.
+
|| '''Scope '''is the term used to describe how objects and '''variables''' get defined within '''R'''.
  
 +
If a '''variable''' is defined inside a '''function,''' then it can be accessed inside the '''function''' only.
  
If a variable is defined inside a '''function, '''then it can be accessed inside the function only.
+
So, if we try to access the same '''variable''' outside the '''function''', it will throw an error.  
 
+
 
+
So, if we try to access the same variable outside the '''function''', it will throw an error.  
+
 
|-  
 
|-  
 
||  
 
||  
Line 357: Line 329:
 
|-  
 
|-  
 
|| Highlight '''result <- 0''' in the '''Source''' window  
 
|| Highlight '''result <- 0''' in the '''Source''' window  
|| Here, the variable '''result''' is defined inside the '''function.'''  
+
|| Here, the '''variable result''' is defined inside the '''function.'''  
 
+
  
So it’s scope is limited to this function only.  
+
So its scope is limited to this '''function''' only.  
 
|-  
 
|-  
 
|| Highlight the output in the '''Console''' window  
 
|| Highlight the output in the '''Console''' window  
|| Hence, when we tried to access this variable outside the '''function''', it threw an error.  
+
|| Hence, when we tried to access this '''variable''' outside the '''function''', it threw an error.  
 
|-  
 
|-  
 
|| Highlight '''result <- 0''' in the '''Source''' window  
 
|| Highlight '''result <- 0''' in the '''Source''' window  
|| For this problem, we can use '''return''' function.  
+
|| For this problem, we can use '''return function'''.  
 
|-  
 
|-  
 
|| Highlight '''sum_between_two''' in the '''Source''' window  
 
|| Highlight '''sum_between_two''' in the '''Source''' window  
|| Let us get back to our function '''sum_between_two'''.  
+
|| Let us get back to our '''function sum_between_two'''.  
 
|-  
 
|-  
 
|| Highlight '''for (i in num1:num2) {'''
 
|| Highlight '''for (i in num1:num2) {'''
Line 378: Line 349:
  
 
in the '''Source''' window  
 
in the '''Source''' window  
|| Press '''Enter''' at the end of the '''for''' loop.  
+
|| Press '''Enter''' at the end of the '''for loop'''.  
 
|-  
 
|-  
 
|| [RStudio]
 
|| [RStudio]
  
 
'''return(result)'''
 
'''return(result)'''
|| Now type the following command.  
+
|| Now type the following '''command'''.  
 
|-  
 
|-  
 
||  
 
||  
Line 389: Line 360:
 
|-  
 
|-  
 
|| Highlight Run button in the Source window  
 
|| Highlight Run button in the Source window  
|| Select all lines of the function '''sum_between_two.'''.  
+
|| Select all lines of the '''function sum_between_two.'''.  
  
Now press '''Ctrl+Enter''' keys together to run the updated '''function'''.  
+
Now press '''Ctrl + Enter''' keys together to run the updated '''function'''.  
 
|-  
 
|-  
 
|| Highlight '''sum_between_two(2, 6)''' in the '''Source''' window  
 
|| Highlight '''sum_between_two(2, 6)''' in the '''Source''' window  
|| Let us run the '''function''' again with arguments 2 and 6.
+
|| Let us run the '''function''' again with '''arguments''' 2 and 6.
 
+
  
 
For this, we will run this line.  
 
For this, we will run this line.  
Line 405: Line 375:
 
|| Let us summarize what we have learnt.
 
|| Let us summarize what we have learnt.
 
|-  
 
|-  
||  
+
||Show Slide
 
+
Show slide
+
  
 
Summary
 
Summary
 
|| In this tutorial, we have learnt:
 
|| In this tutorial, we have learnt:
* Need for functions
+
* Need for '''functions'''
* How to create a user-defined function  
+
* How to create a '''user-defined function'''
* Scope of variables
+
* Scope of '''variables'''
 
+
  
 
|-  
 
|-  
|| Show slide
+
|| Show Slide
  
 
Assignment
 
Assignment
|| We now suggest an assignment.# Create a function which computes combination of two numbers.  
+
|| We now suggest an assignment.
# Create a function which  
+
# Create a '''function''' which computes combination of two numbers.  
#* takes a natural number as an argument, and prints '''Fibonacci '''series
+
# Create a '''function''' which  
 +
#* takes a natural number as an '''argument''', and prints '''Fibonacci '''series
 
#* For example, consider '''fibonacci(5). '''It should print the first 5 elements of '''Fibonacci '''series, i.e. 1, 1, 2, 3, 5.  
 
#* For example, consider '''fibonacci(5). '''It should print the first 5 elements of '''Fibonacci '''series, i.e. 1, 1, 2, 3, 5.  
 
  
 
|-  
 
|-  
|| Show slide
+
|| Show Slide
  
 
About the Spoken Tutorial Project
 
About the Spoken Tutorial Project
Line 434: Line 401:
 
Please download and watch it.
 
Please download and watch it.
 
|-  
 
|-  
|| Show slide
+
|| Show Slide
  
 
Spoken Tutorial Workshops
 
Spoken Tutorial Workshops
 
|| We conduct workshops using Spoken Tutorials and give certificates.
 
|| We conduct workshops using Spoken Tutorials and give certificates.
 
  
 
Please contact us.
 
Please contact us.
Line 468: Line 434:
 
Thank You
 
Thank You
 
|| The script for this tutorial was contributed by Varshit Dubey (College of Engineering Pune).
 
|| The script for this tutorial was contributed by Varshit Dubey (College of Engineering Pune).
 
  
 
This is Sudhakar Kumar from IIT Bombay signing off. Thanks for watching.
 
This is Sudhakar Kumar from IIT Bombay signing off. Thanks for watching.
 
|-
 
|-
 
|}
 
|}

Latest revision as of 23:20, 25 September 2019

Title of the script: Functions in R

Author: Varshit Dubey (CoE Pune) and Sudhakar Kumar (IIT Bombay)

Keywords: R, RStudio, functions, user-defined function, video tutorial

Visual Cue Narration
Show Slide

Opening Slide

Welcome to this tutorial on Functions in R.
Show slide

Learning Objectives

In this tutorial, we will learn:
  • Need for functions
  • How to create a user-defined function
  • Scope of variables
Show Slide

Pre-requisites

https://spoken-tutorial.org/

To understand this tutorial, you should know,
  • Basics of permutation and combination
  • Basic data structures
  • Conditional statements

If not, please locate the relevant tutorials on R on this website.

Show Slide

System Specifications

This tutorial is recorded on
  • Ubuntu Linux OS version 16.04
  • R version 3.4.4
  • RStudio version 1.1.463

Install R version 3.2.0 or higher.

Show Slide

Download Files

For this tutorial, we will use
  • A script file myFunctions.R.

Please download this file from the Code files link of this tutorial.

[Computer screen]

Highlight moviesData.csv and myFunctions.R in the folder functions

I have downloaded and moved this file to functions folder.

This folder is located in myProject folder on my Desktop.

I have also set functions folder as my Working Directory.

Show Slide

Functions

  • A function is a set of statements organized together to perform a specific task.
  • R has a large number of built-in functions.
  • In spite of that, sometimes we need to define our own functions.
Show Slide

Use-defined Functions

  • User-defined functions are specific to user’s requirements.
  • Once created these functions can be used as the built-in functions.
Show Slide

User-defined functions

An R function is created by using the keyword function.

The syntax of an R function is as follows:

myFun <- function(arguments){

Body

}

Show Slide

User-defined functions

The different parts of a function are:
  • Name
  • Arguments
  • Body
  • Return value
Let us switch to RStudio.
Highlight myFunctions.R in the Files window of RStudio Open the script myFunctions.R in RStudio.
Highlight sampleVec in the Source window Here, we have declared a sample vector named sampleVec.

Let us find the summary of this vector by using the built-in function.

[RStudio]

summary(sampleVec)

In the Source window, type the following command.
Highlight Run button in the Source window Save the script and run this script by clicking on the Source button.
Highlight the output in the Console window The summary of sampleVec is displayed.

It includes median, mean, etc.

Highlight summary in the Source window Similarly, R has many built-in functions to make our life easy.

But we can always create a function of our own, depending on the need.

We will create a function that computes the permutation of two numbers.
[RStudio]

permutation <- function(a,b){

factorial(a)/factorial(a-b)

}

In the Source window, type the following command.
Highlight permutation in the Source window Here, we have named our function as permutation.
Highlight function(a,b) in the Source window Next, we have passed two values as arguments.
Highlight factorial(a)/factorial(a-b) in the Source window Inside the function, the definition of permutation has been written.
Highlight Run button in the Source window Run the current line by pressing Ctrl + Enter keys simultaneously.
Highlight permutation in the Source window Now, let us test this function to check whether it gives correct results.

First, we will calculate the permutation of 5 and 2.

[RStudio]

permutation(5,2)

In the Source window, type permutation and in parentheses 5 comma 2.
Highlight Run button in the Source window Run the current line.
Highlight the output in the Console window The required value of 20 is displayed.

Thus, our function has given the correct result.

Highlight function(a,b) in the Source window While creating functions, the arguments are optional.

Let us create a function that does not take any arguments.

Cursor on the interface. We will create a function named as votingEligibility.
[RStudio]

votingEligibility <- function(){

age <- as.integer(readline("Please enter your age: "))

if(age < 18){

print("Sorry, you cannot cast your vote.")

} else{

print("Congrats! You can cast your vote.")

}

}

In the Source window, type the following commands.
Highlight the if condition in the function. This function should print a message whether an Indian citizen is eligible to vote or not.

Remember the minimum age for Indian citizens to vote is 18 years.

Highlight function() in the Source window Here, we have not passed any arguments.
Highlight readline in the Source window readline function reads a line from the terminal in interactive use.
Highlight Run button in the Source window Run this block of code to execute the function votingEligibility.
Highlight votingEligibility in the Source window Now, we will run this function to see whether it works.
[RStudio]

votingEligibility()

In the Source window, type the following command.

Please note that we are not passing any arguments inside this function.

Highlight Run button in the Source window Run the current line.
Highlight Please enter your age: in the Console window We are asked to enter our age. Let us type 21 and press Enter.
Highlight the output in the Console window We get a message, You can cast your vote.
Show Slide

Example of a Function

Now let us say we want to create a function sum_between_two such that
  • It takes two natural numbers num1 and num2 as its arguments.
  • Then, it returns the sum of all numbers from num1 to num2.
  • For example, if we pass 2 and 6 to the function sum_between_two, it should return the value of 2 + 3 + 4 + 5 + 6.
Let us switch back to RStudio.
[RStudio]

sum_between_two <- function(num1, num2){

result <- 0

for (i in num1:num2) {

result <- result + i

}

}

In the Source window, type the following command.
Highlight sum_between_two in the Source window We have named our function as sum_between_two.
Highlight function(num1, num2) in the Source window Also, we have specified the two arguments num1 and num2.
Highlight result <- 0 in the Source window Inside the function, we have initialized an object named result to store the sum.
Highlight for (i in num1:num2) in the Source window We have created a for loop which will increment the result at each iteration.
Highlight Run button in the Source window Run this block of code to execute the function.
Highlight sum_between_two in the Source window Now we test our function sum_between_two by running it with two arguments.
[RStudio]

sum_between_two(2, 6)

In the Source window, type the following command.
Highlight Run button in the Source window Run the current line.
Highlight sum_between_two(2, 6) in the Console window The function with arguments 2 and 6 was executed, but we got nothing as output.

Let us investigate what went wrong.

Highlight sum_between_two(2, 6) in the Console window We know that our function got executed as we did not get any error after executing this line.
Highlight result <- result + i in the Source window It means that the object named result got incremented.
[RStudio]

print(result)

Now, we will check the value of the result.

In the Source window, type the following command.

Highlight Run button in the Source window Run the current line.
Highlight the output in the Console window It shows, Error in print(result) : object 'result' not found.
Highlight the output in the Console window To understand what went wrong, we need to learn a concept named as Scope.
Show Slide

Scope of objects and variables

Scope is the term used to describe how objects and variables get defined within R.

If a variable is defined inside a function, then it can be accessed inside the function only.

So, if we try to access the same variable outside the function, it will throw an error.

Let us switch to RStudio.
Highlight result <- 0 in the Source window Here, the variable result is defined inside the function.

So its scope is limited to this function only.

Highlight the output in the Console window Hence, when we tried to access this variable outside the function, it threw an error.
Highlight result <- 0 in the Source window For this problem, we can use return function.
Highlight sum_between_two in the Source window Let us get back to our function sum_between_two.
Highlight for (i in num1:num2) {

result <- result + i

}

in the Source window

Press Enter at the end of the for loop.
[RStudio]

return(result)

Now type the following command.
I will resize the Console window.
Highlight Run button in the Source window Select all lines of the function sum_between_two..

Now press Ctrl + Enter keys together to run the updated function.

Highlight sum_between_two(2, 6) in the Source window Let us run the function again with arguments 2 and 6.

For this, we will run this line.

Highlight the output in the Console window We see the output 20 as expected.
Let us summarize what we have learnt.
Show Slide

Summary

In this tutorial, we have learnt:
  • Need for functions
  • How to create a user-defined function
  • Scope of variables
Show Slide

Assignment

We now suggest an assignment.
  1. Create a function which computes combination of two numbers.
  2. Create a function which
    • takes a natural number as an argument, and prints Fibonacci series
    • For example, consider fibonacci(5). It should print the first 5 elements of Fibonacci series, i.e. 1, 1, 2, 3, 5.
Show Slide

About the Spoken Tutorial Project

The video at the following link summarises the Spoken Tutorial project.

Please download and watch it.

Show Slide

Spoken Tutorial Workshops

We conduct workshops using Spoken Tutorials and give certificates.

Please contact us.

Show Slide

Forum to answer questions

Please post your timed queries in this forum.
Show Slide

Forum to answer questions

Please post your general queries in this forum.
Show Slide

Textbook Companion

The FOSSEE team coordinates the TBC project.

For more details, please visit these sites.

Show Slide

Acknowledgment

The Spoken Tutorial project is funded by NMEICT, MHRD, Govt. of India
Show Slide

Thank You

The script for this tutorial was contributed by Varshit Dubey (College of Engineering Pune).

This is Sudhakar Kumar from IIT Bombay signing off. Thanks for watching.

Contributors and Content Editors

Madhurig, Nancyvarkey, Sudhakarst