0% found this document useful (0 votes)
44 views30 pages

Lecture 7

This document provides an introduction to functions and packages in R. It discusses how everything in R is a built-in function and how users can create their own functions. Functions allow for modularity and reusability in code. Packages extend R's capabilities by allowing users to download and install additional functions from an online library. The document demonstrates how to install and load packages to access new functions and provides examples of creating simple functions to perform tasks like calculating the sum or product of inputs.

Uploaded by

Syed Furqan Alam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
44 views30 pages

Lecture 7

This document provides an introduction to functions and packages in R. It discusses how everything in R is a built-in function and how users can create their own functions. Functions allow for modularity and reusability in code. Packages extend R's capabilities by allowing users to download and install additional functions from an online library. The document demonstrates how to install and load packages to access new functions and provides examples of creating simple functions to perform tasks like calculating the sum or product of inputs.

Uploaded by

Syed Furqan Alam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 30

Introduction to R -

Functions, Packages

Andrew Jaffe
10/18/10
Overview
 Functions
 Packages
 Questions
Functions
 Everything you use in R is a built-in
function
 You can download new functions
(packages – next section)
 You can add your own to a script
Functions
 Built in functions (note the lack of
parenthesis – this is also why you don’t
want to name variables as functions):

> rep
function (x, ...) .Primitive("rep")
>c
function (..., recursive = FALSE)
.Primitive("c")
Functions
 Syntax: functionName <- function(inputs) {
body of the function which returns
something}
 You must run/submit the function before
you can use it
 Note that variable naming within a function
is protected, and not altered by whatever
your script is doing
Functions
Input

# tests if a number if positive


pos = function(x) {
if(x >= 0) out = 1
if(x < 0) out = 0
return(out)
} Output
Functions
> pos = function(x) {
Run the + if(x >= 0) out = 1
function + if(x < 0) out = 0
first + return(out)
+ }
> pos(5)
[1] 1
> pos(-5)
[1] 0
Functions
 The value that the function returns can be
stored as a new variable

> y = pos(4)
> y
[1] 1
Functions

> # protected – x is the


# input to pos
> x = 3
> pos(6)
[1] 1
> x
[1] 3
Functions
 Using return() explicitly tells the function
what to return – safe
 Otherwise, the function will return the last
value that it works with or assigns
 This can be an issue if you use a lot of
logical statements
Functions
 Adding a ‘verbose’ logical variable gives
the user some feedback
> pos = function(x,verbose=TRUE) {
+ if(x >= 0) out = 1
+ if(x < 0) out = 0
+
+ if(verbose) cat("finished running","\n")
+ return(out)
+ }
> y = pos(5)
finished running
> y
[1] 1
Functions
 You can change the input into functions
when you run them
 You can name each input, or just put their
values in order
> y = pos(5, verbose = FALSE)
> y = pos(5, FALSE) # same thing
> y
[1] 1
Functions
 Here, we set verbose to be TRUE by
default, ie that that function says what its
doing
 Using verbose statements throughout your
functions makes it easier to use
(especially if other people are going to use
your function)
Functions
 Note: really long ‘for’ loops also benefit
from using verbose statements
 %%: mod, the remainder of the first
number divided by the second
 Print a period every 10,000 iterations
for(i in 1:1e5) {
if(i %% 10000 == 0) cat(".")
# do other stuff
}
Functions
 Why do functions?
 Provides modularity to your code
 You can solve small problems using functions
 Keeps your actual analysis script cleaner
 You can distribute your code script to other
people
Functions
 For example, download the lecture notes,
and type source(“lecture_notes.R”)
 The ‘pos’ function should be added into
your working directory
 Another function, ‘mypar’ was added, but
requires a …package!
Functions
 Make a function that takes two numbers
as inputs, and returns their sum
 Make a function that takes three inputs as
inputs and returns their product
Functions

summ <- function(a,b) {


out = a+b
return(out)
}

prodd <- function(a,b,c) {


out = a*b*c
return(out)
}
Overview
 Functions
 Packages
 Questions
Packages
 R can access and install a huge library of
packages
 The full list is here: http://cran.r-
project.org/web/packages/
 You only need to install a package once,
then you can use it whenever you want
Packages
 ?install.packages
 Let’s try downloading “RColorBrewer”
 install.packages(“RColorBrewer”)
 A list of repository directories should pop-
up  select USA (basically any of them
will work)
I think the Maryland one is Hopkins…
Packages
 Some installation popups occurs and the
package should be installed on your
computer
 Then, library(package_name)
 library(RColorBrewer) – quotes are
optional
Packages
 ?RColorBrewer: “Creates nice looking
color palettes especially for thematic
maps”
 Top left corner: “RColorBrewer
{RColorBrewer}“
 Top left in mean: “mean {base}”
 The thing in {} is the package
Packages
 Now, resource the lecture 7 notes so that
the mypar() function gets read in correctly
 This function will alter the plot parameters
to make the color palette more divergent,
changes the margin sizes, and can allow
you to plot multi-panel plots
Packages
 mypar() # default is 1 x 1 plot space
 mypar(2,2) # 2 rows, 2 columns

> data(cars)
> mypar()
> plot(cars, type = "b", col = 5)
Packages
 I usually google “R + [something I’m trying
to do]” and sometimes links can direct you
to existing packages
 The full list is on the CRAN website
 Some Epi ones are “survival” – survival
analysis, “lme4” – longitudinal data
analysis, “Epi” – some epi functions
Packages
 Try installing those packages now
 Remember, to use a package, you must
invoke the library(package) command
Packages
 library(survival)
 ?survival
 ??survival – “fuzzy search”
 ?Surv
Overview
 Functions
 Packages
 Questions
Questions?
 Any burning R questions? Open floor…

You might also like