This page is an introduction to the R programming language. It shows how to perform very simple tasks using R. First you need to have R installed (see the Settings page). If you use Windows or Mac OS, the easiest solution is to use the R Graphical User Interface (click on its icon). If you use Linux, open a terminal and type `R`

at the command prompt.

Usually when you open R, you see a message similar to the following in the console:

```
R version 3.5.1 (2018-07-02) -- "Feather Spray"
Copyright (C) 2018 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
Natural language support but running in an English locale
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
[Workspace loaded from ~/.RData]
>
```

You can type your code after the angle bracket `>`

.

R can be used as a simple calculator and we can perform any simple computation.

```
> # Sample Session
> # This is a comment
>
> 2 # print a number
[1] 2
> 2+3 # perform a simple calculation
[1] 5
> log(2) # natural log
[1] 0.6931472
```

We can also store numeric or string objects.

```
> x <- 2 # store an object
> x # print this object
[1] 2
> (x <- 3) # store and print an object
[1] 3
>
> x <- "Hello" # store a string object
> x
[1] "Hello"
```

We can also store vectors.

```
> Height <- c(168, 177, 177, 177, 178, 172, 165, 171, 178, 170) #store a vector
> Height # print the vector
[1] 168 177 177 177 178 172 165 171 178 170
>
> Height[2] # Print the second component
[1] 177
> Height[2:5] # Print the second, the 3rd, the 4th and 5th component
[1] 177 177 177 178
>
> (obs <- 1:10) # Define a vector as a sequence (1 to 10)
[1] 1 2 3 4 5 6 7 8 9 10
>
> Weight <- c(88, 72, 85, 52, 71, 69, 61, 61, 51, 75)
>
> BMI <- Weight/((Height/100)^2) # Performs a simple calculation using vectors
> BMI
[1] 31.17914 22.98190 27.13141 16.59804 22.40879 23.32342 22.40588 20.86112
[9] 16.09645 25.95156
```

We can also describe the vector with `length()`, `mean()` and `var()`.

```
> length(Height)
[1] 10
> mean(Height) # Compute the sample mean
[1] 173.3
> var(Height)
[1] 22.23333
```

We can also define a matrix.

```
> M <- cbind(obs,Height,Weight,BMI) # Create a matrix
> typeof(M) # Give the type of the matrix
[1] "double"
> class(M) # Give the class of an object
[1] "matrix"
> is.matrix(M) # Check if M is a matrix
[1] TRUE
> is.vector(M) # M is not a vector
[1] FALSE
> dim(M) # Dimensions of a matrix
[1] 10 4
```

We can plot the data using `plot()`.

```
> plot(Height,Weight,ylab="Weight",xlab="Height",main="Corpulence")
```

We can define a dataframe.

```
> mydat <- data.frame(M) # Creates a dataframe
> names(mydat) # Give the names of each variable
[1] "obs" "Height" "Weight" "BMI"
> str(mydat) # give the structure of your data
'data.frame': 10 obs. of 4 variables:
$ obs : num 1 2 3 4 5 6 7 8 9 10
$ Height: num 168 177 177 177 178 172 165 171 178 170
$ Weight: num 88 72 85 52 71 69 61 61 51 75
$ BMI : num 31.2 23 27.1 16.6 22.4 ...
>
> View(mydat) # Look at your data
>
> summary(mydat) # Descriptive Statistics
obs Height Weight BMI
Min. : 1.00 Min. :165.0 Min. :51.00 Min. :16.10
1st Qu.: 3.25 1st Qu.:170.2 1st Qu.:61.00 1st Qu.:21.25
Median : 5.50 Median :174.5 Median :70.00 Median :22.70
Mean : 5.50 Mean :173.3 Mean :68.50 Mean :22.89
3rd Qu.: 7.75 3rd Qu.:177.0 3rd Qu.:74.25 3rd Qu.:25.29
Max. :10.00 Max. :178.0 Max. :88.00 Max. :31.18
>
```

You can save an R session (all the objects in memory) and load the session.

```
> save.image(file="~/Documents/Logiciels/R/test.rda")
> load("~/Documents/Logiciels/R/test.rda")
```

We can define a working directory. Note for Windows users : R uses slash ("/") in the directory instead of backslash ("\").

```
> setwd("~/Desktop") # Sets working directory (character string enclosed in "...")
> getwd() # Returns current working directory
[1] "/Users/username/Desktop"
> dir() * Lists the content of the working directory
```

There are some special characters in R

`NA`: Not Available (i.e. missing values)`NaN`: Not a Number (e.g. 0/0)`Inf`: Infinity`-Inf`: Minus Infinity.

For instance 0 divided by 0 gives a `NaN` but 1 divided by 0 gives

```
> 0/0
[1] NaN
> 1/0
[1] Inf
```

We can exit R using `q()`. The `no` argument specifies that the R session is not saved.

```
q("no")
```