Installing R & Rstudio on your laptops

Download and install R

  1. Download and install R (choose the version appropriate for your Operating System: https://cran.rstudio.com/)

Download and install Rstudio

  1. Download and install Rstudio (choose the version appropriate for your Operating System: https://www.rstudio.com/products/rstudio/download/#download)

You can start Rstudio either from terminal or among installed softwares.

Install required R packages

These are a few R packages we will use along the tutorial:

# Enter commands in R (or R studio, if installed)

# install.packages()
install.packages('tidyverse')
library(tidyverse)

We are going to start with the basics of coding, Rstudio, and R language.

Warm up exercise

Let’s begin

 1 + 2
## [1] 3

Variables:

x <- 1
x
## [1] 1

Functions

Functions take arguments in paranthesis and process the output. Here the function ‘c’ returns the values as a vector.

c(1, 2, 3)
## [1] 1 2 3

Comments

Everything that follows a ‘#’ is considered as command.

# This line is a command
1 + 4
## [1] 5

Logical operations

a <- 2
b <- 9.5
a > b
## [1] FALSE
z <- a > b
z
## [1] FALSE
class(a)
## [1] "numeric"
class(b)
## [1] "numeric"
class(z)
## [1] "logical"

Reverse the logic:

!z
## [1] TRUE

Character

x <- as.character(3.14) 
x
## [1] "3.14"
fname = "John"; lname ="Doe";
paste(fname, lname)
## [1] "John Doe"
?paste

Vectors

my_vec1 <- c("aa", "bb", "cc", "dd", "ee")
my_vec2 <- c(1, 2, 3, 4, 5)
length(my_vec2)
## [1] 5
#Combining vectors:
c(my_vec1, my_vec2)
##  [1] "aa" "bb" "cc" "dd" "ee" "1"  "2"  "3"  "4"  "5"
Arithmetics
my_vec2
## [1] 1 2 3 4 5
2 * my_vec2 # Mutliply by 2
## [1]  2  4  6  8 10
my_vec2 - 2
## [1] -1  0  1  2  3
my_vec3 <- c(10, 20, 30, 40, 50)

my_vec2 + my_vec3
## [1] 11 22 33 44 55
3 * (my_vec2 + my_vec3) / 5
## [1]  6.6 13.2 19.8 26.4 33.0

Vector indexing

Indexing starts with 1 unlike python.

s <- c("aa", "bb", "cc", "dd", "ee") 
s[3] 
## [1] "cc"
s[3:5]
## [1] "cc" "dd" "ee"
s[-4] #Now 'dd' is gone!
## [1] "aa" "bb" "cc" "ee"
s[c(2, 3, 3)]
## [1] "bb" "cc" "cc"
s[c(2, 1, 3)]
## [1] "bb" "aa" "cc"
s[c(FALSE, TRUE, FALSE, TRUE, FALSE)] #Logical indexing
## [1] "bb" "dd"

Naming the vector members:

v <- c("Mary", "Sue")
v
## [1] "Mary" "Sue"
names(v) <- c("First", "Last")
v
##  First   Last 
## "Mary"  "Sue"
v["First"]
##  First 
## "Mary"

Matrix

“A matrix is a collection of data elements arranged in a two-dimensional rectangular layout.”

A <- matrix( 
   c(2, 4, 3, 1, 5, 7), # the data elements 
   nrow=2,              # number of rows 
   ncol=3,              # number of columns 
   byrow = TRUE)        # fill matrix by rows 

A
##      [,1] [,2] [,3]
## [1,]    2    4    3
## [2,]    1    5    7
A[2, 3] # A[row, column]
## [1] 7
A[2, ] # The entire 2nd row
## [1] 1 5 7
A[, 3] # The entire 3rd column
## [1] 3 7
A[, c(1,3)]  # the 1st and 3rd columns 
##      [,1] [,2]
## [1,]    2    3
## [2,]    1    7

Transpose the matrix

B <- matrix( 
   c(2, 4, 3, 1, 5, 7), 
   nrow=3, 
   ncol=2)
B
##      [,1] [,2]
## [1,]    2    1
## [2,]    4    5
## [3,]    3    7
t(B)
##      [,1] [,2] [,3]
## [1,]    2    4    3
## [2,]    1    5    7

Combine matrices

cbind(A, t(B)) # combine row-wise
##      [,1] [,2] [,3] [,4] [,5] [,6]
## [1,]    2    4    3    2    4    3
## [2,]    1    5    7    1    5    7
rbind(A, t(B)) # combine column-wise
##      [,1] [,2] [,3]
## [1,]    2    4    3
## [2,]    1    5    7
## [3,]    2    4    3
## [4,]    1    5    7

Data frames

“A data frame is used for storing data tables. It is a list of vectors of equal length.”

n <- c(2, 3, 5) 
s <- c("aa", "bb", "cc") 
b <- c(TRUE, FALSE, TRUE) 
df <- data.frame(n, s, b)       # df is a data frame
df
##   n  s     b
## 1 2 aa  TRUE
## 2 3 bb FALSE
## 3 5 cc  TRUE
mtcars
##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
## Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
## Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
## Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
## Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
## Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
## Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
## Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
## Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
## Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
## AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
## Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
## Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
## Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
## Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
## Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
## Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
## Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
## Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
mtcars[10, 4]
## [1] 123
mtcars['Merc 280', 'hp']
## [1] 123
mtcars["Merc 280", ]
##           mpg cyl  disp  hp drat   wt qsec vs am gear carb
## Merc 280 19.2   6 167.6 123 3.92 3.44 18.3  1  0    4    4
mtcars[["hp"]]
##  [1] 110 110  93 110 175 105 245  62  95 123 123 180 180 180 205 215 230  66  52
## [20]  65  97 150 150 245 175  66  91 113 264 175 335 109
mtcars$hp
##  [1] 110 110  93 110 175 105 245  62  95 123 123 180 180 180 205 215 230  66  52
## [20]  65  97 150 150 245 175  66  91 113 264 175 335 109
nrow(mtcars)
## [1] 32
ncol(mtcars)
## [1] 11
mtcars[, c("mpg", "hp")]
##                      mpg  hp
## Mazda RX4           21.0 110
## Mazda RX4 Wag       21.0 110
## Datsun 710          22.8  93
## Hornet 4 Drive      21.4 110
## Hornet Sportabout   18.7 175
## Valiant             18.1 105
## Duster 360          14.3 245
## Merc 240D           24.4  62
## Merc 230            22.8  95
## Merc 280            19.2 123
## Merc 280C           17.8 123
## Merc 450SE          16.4 180
## Merc 450SL          17.3 180
## Merc 450SLC         15.2 180
## Cadillac Fleetwood  10.4 205
## Lincoln Continental 10.4 215
## Chrysler Imperial   14.7 230
## Fiat 128            32.4  66
## Honda Civic         30.4  52
## Toyota Corolla      33.9  65
## Toyota Corona       21.5  97
## Dodge Challenger    15.5 150
## AMC Javelin         15.2 150
## Camaro Z28          13.3 245
## Pontiac Firebird    19.2 175
## Fiat X1-9           27.3  66
## Porsche 914-2       26.0  91
## Lotus Europa        30.4 113
## Ford Pantera L      15.8 264
## Ferrari Dino        19.7 175
## Maserati Bora       15.0 335
## Volvo 142E          21.4 109

Importing files:

getwd()
setwd("your target directory")

Disclaimer: This tutorial has been originated from: http://www.r-tutor.com/r-introduction

sessionInfo()
## R version 4.1.0 (2021-05-18)
## Platform: x86_64-apple-darwin17.0 (64-bit)
## Running under: macOS Big Sur 10.16
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRblas.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## loaded via a namespace (and not attached):
##  [1] digest_0.6.29   R6_2.5.1        jsonlite_1.8.0  magrittr_2.0.3 
##  [5] evaluate_0.16   stringi_1.7.8   cachem_1.0.6    rlang_1.0.4    
##  [9] cli_3.3.0       rstudioapi_0.13 jquerylib_0.1.4 bslib_0.4.0    
## [13] rmarkdown_2.15  tools_4.1.0     stringr_1.4.0   xfun_0.32      
## [17] yaml_2.3.5      fastmap_1.1.0   compiler_4.1.0  htmltools_0.5.3
## [21] knitr_1.39      sass_0.4.2