Professional Documents
Culture Documents
Functions
I N T E R M E D I AT E R
Filip Schouwenaars
DataCamp Instructor
Functions
You already know 'em!
INTERMEDIATE R
Black box principle
INTERMEDIATE R
Black box principle
INTERMEDIATE R
Black box principle
INTERMEDIATE R
Black box principle
INTERMEDIATE R
Black box principle
INTERMEDIATE R
Black box principle
INTERMEDIATE R
Black box principle
INTERMEDIATE R
Call function in R
sd(c(1, 5, 6, 7))
2.629956
2.629956
2.629956
INTERMEDIATE R
Function documentation
help(sd)
?sd
INTERMEDIATE R
Questions
sd(x, na.rm = FALSE)
na.rm = FALSE
sd(values) works?
INTERMEDIATE R
Argument matching
sd(x, na.rm = FALSE)
By position
sd(values)
By name
sd(x = values)
INTERMEDIATE R
na.rm argument
values <- c(1, 5, 6, NA) sd(values, TRUE)
sd(values)
2.645751
NA
2.645751
INTERMEDIATE R
sd(values) works?
values <- c(1, 5, 6, 7)
sd(values)
2.629956
sd()
Error in is.data.frame(x) :
argument "x" is missing, with no default
INTERMEDIATE R
Useful trick
args(sd)
INTERMEDIATE R
Wrap-up
Functions work like a black box
INTERMEDIATE R
Let's practice!
I N T E R M E D I AT E R
Writing Functions
I N T E R M E D I AT E R
Filip Schouwenaars
DataCamp Instructor
When write your own?
Solve a particular, well-de ned problem
INTERMEDIATE R
The triple() function
INTERMEDIATE R
The triple() function
my_fun <- function(arg1, arg2) {
body
}
INTERMEDIATE R
The triple() function
triple <- function(arg1, arg2) {
body
}
INTERMEDIATE R
The triple() function
triple <- function(x) {
body
}
INTERMEDIATE R
The triple() function
triple <- function(x) {
3 * x
}
INTERMEDIATE R
The triple() function
triple <- function(x) { Numeric 6 matched to
3 * x argument x (by pos)
}
Function body is executed: 3
*6
ls()
Last expression = return
"triple" value
triple(6)
18
INTERMEDIATE R
return()
triple <- function(x) {
y <- 3 * x
return(y)
}
triple(6)
18
INTERMEDIATE R
The math_magic() function
INTERMEDIATE R
The math_magic() function
INTERMEDIATE R
The math_magic() function
INTERMEDIATE R
The math_magic() function
my_fun <- function(arg1, arg2) {
body
}
INTERMEDIATE R
The math_magic() function
math_magic <- function(arg1, arg2) {
body
}
INTERMEDIATE R
The math_magic() function
math_magic <- function(a, b) {
body
}
INTERMEDIATE R
The math_magic() function
math_magic <- function(a, b) {
a*b + a/b
}
math_magic(4, 2)
10
math_magic(4)
INTERMEDIATE R
Optional argument
math_magic <- function(a, b = 1) {
a*b + a/b
}
math_magic(4)
math_magic(4, 0)
Inf
INTERMEDIATE R
Use return()
math_magic <- function(a, b = 1) {
if(b == 0){
return(0)
}
a*b + a/b
}
math_magic(4, 0)
INTERMEDIATE R
Let's practice!
I N T E R M E D I AT E R
R Packages
I N T E R M E D I AT E R
Filip Schouwenaars
DataCamp Instructor
R Packages
Where do mean() , list() and sample() come from?
Part of R packages
Easy to share
INTERMEDIATE R
Install packages
base package: automatically installed
install.packages("ggvis")
INTERMEDIATE R
Load packages
load package = a ach to search list
search()
INTERMEDIATE R
Load packages: library()
library("ggvis")
search()
INTERMEDIATE R
Load packages: require()
library("data.table")
Error in library("data.table") :
there is no package called ‘data.table’
require("data.table")
INTERMEDIATE R
Load packages: require()
result <- require("data.table")
result
FALSE
INTERMEDIATE R
Wrap-up
Install packages: install.packages()
INTERMEDIATE R
Let's practice!
I N T E R M E D I AT E R