Introducing 

Prezi AI.

Your new presentation assistant.

Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.

Loading…
Transcript

Aperçu du cours

Intro & R comme calculatrice

Pourquoi utiliser R?

C'est quoi R?

Pourquoi utiliser R?

Défis

Défi 1

Pourquoi utiliser R?

La console R-Studio

Ce que les gens faisaient traditionnellement pour analyser leurs données :

R est un language de programmation en source libre qui a été créé pour les analyses statistiques ainsi que la recherche et la visualisation des données.

Ouvrir R-Studio

C'est compatible

  • R fonctionne sur la majorité des systèmes d'exploitation
  • De plus en plus de scientifiques utilisent R.
  • Les capacités de R sont en constante amélioration.

C'est en source libre !

  • Amélioré par le public,
  • pour le public !
  • Gratuit
  • Tout au long de ces ateliers, vous aurez à compléter une série de défis qui seront indiqués par des cubes rubiks.

  • Durant les défis, collaborez avec vos voisins !

Une note pour les gens qui utilisent Windows

R permet de tout faire en un seul programme!

Si la restriction :

"unable to write on disk"

apparaît lorsque vous essayez d'ouvrir R-studio, faites un clic-droit sur votre icône et choissisez :

"Execute as administrator"

Défi 2

Défi 3

Comment lire la console

Défi 3

Solution

Truc R!

Défi 2

Solution

Utiliser la console comme une calculatrise

Dans la console le texte ressemble typiquement à ceci:

> input

Exposants:

Utiliser R Studio afin de faire le calcul suivant :

Multiplication

et division:

Addition et soustraction:

Utilisez R-Studio afin de faire le calcul suivant:

Question:

2 + 16 x 24 - 56

Question:

2 + 16 x 24 - 56/ (2+1) - 457

> input

Utilisez les touches "haut" et "bas" afin de reproduire des commandes précédentes

[1] Ceci est le output

  • Il faut appuyer sur "enter" pour que le "output" apparaisse

> 2*2

> 2^3

> 1+1

2 + 16 x 24 - 56

2 + 16 x 24 - 56/ (2+1) - 457

[1] Ceci est le output

Solution:

Au courant de cette série d'ateliers, nous allons le représenter comme ceci:

[1] 2

[1] 8

[1] 4

Essayez-le !

> 2+16*24-56

> 2+16*24-56/(2+1)-457

Ces crochets aident à vous situer par rapport à ou vous êtes rendus dans le "output"

Indice:

  • le symbole * est utilisé pour la multiplication

> input

Qu'est-ce que ces crochets représentent ?

> 8/2

> 10-1

*Notez que R respecte toujours la priorité des opérations

Indice:

  • Pensez à la priorité des opérations (PEMDAS)

[1] 330

[1] -89.66667

[1] 1 2 3 4 5

[6] 6 7 8 9 10

[1] 9

[1] 4

[1] Ceci est le output

Défi 4

Défi 4

Solution

Quel est l'aire d'un cercle avec un rayon de 5 cm ?

Question:

Quel est l'aire d'un cercle avec un rayon de 5 cm ?

Solution:

Solution alternative:

> 3.1416*5^2

> pi*5^2

*Notez que des parenthèses

ne sont pas nécéssaires

[1] 78.54

*Notez que R a plusieurs constantes pré-programmées que vous pouvez utiliser, comme "pi"

[1] 78.54

Objets et indexation

Les objets

Truc R

Les objets

Défi 6

Défi 5

Défi 5

Solution

Défi 6

Solution

  • Les noms d'objets peuvent seulement inclure :
  • Un des concepts fondamentaux dans R !
  • Utilisez des noms courts et explicites pour vos objets. Un objet nommé data n'est pas très informatif !
  • Tapez :
  • La touche TABULATION permet de compléter automatiquement les noms d'objets.
  • Permet d'attribuer un nom à des valeurs avec l'opérateur d'assignation : "<-"

Question:

Créez un objet avec une valeur de 1 + 1.718282

(le logarithme naturel) et nommez-le log.nat.

> log

Question:

Créez un deuxième objet (vous choisissez le nom) avec un nom débutant par un chiffre. Que se passe-t-il ?

a-z A-Z

0-9

.

_

lettres

chiffres

points

traits de soulignement

  • Ajoutez des espaces avant et après "<-". Ça aère le code !

Créez un objet avec une valeur de

1 + 1.718282 (le logarithme naturel)

et nommez-le log.nat.

Créez un deuxième objet (vous choisissez le nom) avec un nom débutant par un chiffre. Que se passe-t-il ?

Solution:

  • Appuyez sur "Tab".

  • R retourne la valeur de l'objet quand on l'écrit à la console.

Solution:

  • Ça permet de limiter les erreurs de frappe et ça accélère l'entrée des commandes.

> log.nat <- 1 + 1.718282

  • La valeur à droite est attribuée au nom à gauche.
  • Les noms doivent toujours commencer par une lettre !

Créer un objet débutant par un chiffre retourne l'erreur suivante :

> mean.x <- (2+6)/2

> log.nat

> mean.x

Essayons-le !

  • Également possible d'utiliser "=", mais ça peut causer des problèmes. À éviter !

[1] 2.718282

  • Appuyez sur "enter" pour sélectionner l'objet désiré.

Symbole inattendu dans "votre nom d'objet"

  • Respectez la casse ! Le nom variable 1 n'est pas la même chose que Variable1.

[1] 4

Centre de la science de la biodiversité du Québec

Série d'ateliers R

Indexer des objets

Défi 10

Les structures de données dans R

Défi 10

Solution

  • Parfois, on veut seulement visualiser ou extraire une partie d'un objet.

Vecteurs

  • Partie 1

Tableaux de données

  • Ça se fait avec les crochets : [ ]

a) Extrayez la colonne n.especes du tableau mon.premier.tab et multipliez-la par les quatre premières valeurs du vecteur vecteur.num.

Vecteurs

Tableaux de données

> mon.premier.tab$n.especes * vecteur.num[c(1:4)]

Tableaux de données

  • On peut utiliser des vecteurs pour les calculs.
  • Pour créer une vecteur, ça prend la fonction c()

Tableaux de données

  • Création de vecteurs :
  • Un des objets les plus communs dans R.

> Code_Site <- c("A1.01","A1.02","B1.01","B1.02")

> pH.sol <- c(5.6, 7.3, 4.1, 6.0)

> n.especes <- c(17, 23, 15, 7)

>Traitement <-

c("Fertilise","Fertilise","Pas.Fertilise","Pas.Fertilise")

  • Format principal des données écologiques
  • Combiner les vecteurs :
  • c signifie combiner ou concaténer

> mon.premier.tab<-data.frame(Code_Site,pH.sol,n.especes,Traitement)

> mon.premier.tab

  • data.frame() est une fonction. On explique le concept de fonction bientôt !
  • Constitué d’une liste de valeurs semblables
  • Voici un exemple de tableau fictif :
  • Le format est : nom.vecteur <- c(valeur1, valeur2, ...)
  • Les opérations sont effectuées sur chaque élément.
  • Un groupe de vecteurs de même longueur
  • Un vecteur d'un seul élément = vecteur atomique

Défi 7

Défi 7

Solution

> impair <- c(1, 3, 5, 7, 9)

Créez un vecteur contenant

les cinq premiers nombres impairs

(en commençant par 1) et nommez-le impair.

[1] 1 3 5 7 9

Vecteur numérique

  • Colonnes = variables

N sp.

pH sol

Traitement

Code Site

> x <- 1:5

  • Toutes les valeurs d'un vecteur doivent avoir le même mode !

> vecteur.num<-c(1, 2, 5, 3, 6, -2, 4)

  • On indique la position des valeurs qu'on souhaite obtenir entre les crochets. C'est l'indexation!

> y <- 6

5.6

17

Fert

A1.01

  • Lignes = observations, cas, sites, individus, répétitions...

Mode

Vecteur de caractères

A1.02

23

7.3

Fert

> vecteur.car<-c("bleu","rouge","vert")

Logique

Numérique

Caractère

[1] 17 46 75 21

  • Différents modes possibles

> x+y

> x*x

4.1

15

Non.Fert

B1.01

Vecteur logique

Valeurs

TRUE/FALSE

Seulement des chiffres

*** mais même mode par vecteur !

Chaînes de caractères ou mélange avec d'autres modes

> vecteur.logic<-c(TRUE,TRUE,FALSE)

B1.02

6.0

7

Non.Fert

[1] 7 8 9 10 11

[1] 1 4 9 16 25

même chose !

> vecteur.logic2<-c(T,T,F)

Indexer des vecteurs

Défi 8

Défi 9

Défi 8

Solution

> vecteur.num[-3]

> vecteur.num[3]

  • Partie 2

[1] 1 2 3 6 -2 4

[1] 5

Explorez la différence entre ces deux lignes de code :

b)

a)

> vecteur.car[c(1,3)]

> vecteur.car[c(1,4)]

> vecteur.num[c(1,3)]

> vecteur.num[4]

b) Ensuite, écrivez une déclaration logique qui vérifie si les valeurs obtenues sont plus grandes que 25.

> vecteur.car == "bleu"

[1] 1 5

[1] "bleu" "vert"

[1] 3

[1] "bleu" NA

a) Extrayez la 4ième valeur du vecteur "vecteur.num".

b) Extrayez les 1ière et 3ième valeurs du vecteur "vecteur.num".

c) Extrayez toutes les valeurs du vecteur "vecteur.num" à l'exception des 2ième et 4ième valeurs.

> (mon.premier.tab$n.especes * vecteur.num[c(1:4)]) > 25

> vecteur.car[vecteur.car == "bleu"]

> vecteur.num[vecteur.num > 5]

c)

[1] 6

> vecteur.num[c(-2,-4)]

> vecteur.car[vecteur.car == "bleu"]

[1] 1 5 6 -2 4

[1] "bleu"

[1] FALSE TRUE TRUE FALSE

Matrices, tableaux (arrays) et listes

Un bref commentaire sur les déclarations logiques

Indexer des tableaux de données

Défi 9

Solution

  • R permet d'évaluer des déclarations logiques, i.e. est-ce qu'une affirmation est vraie ou fausse
  • On spécifie deux dimensions : numéro de rangée & de colonne

> vecteur.car == "bleu"

  • Ça prend des opérateurs logiques.

nom.tableau[rangée, colonne]

Opérateur

Description

On évalue une déclaration logique. Pour chaque élément du vecteur vecteur.car, R vérifie si l'élément est égal à "bleu" et retourne une réponse (TRUE/FALSE).

Exemples de déclarations logiques

x2 <- c(1:5)

y2 <- c(1,2,-7,4,5)

x2 >= 3

Quelques exemples

[1] FALSE FALSE TRUE TRUE TRUE

x2 == y2

[1] TRUE TRUE FALSE TRUE TRUE

Extrait la ligne 1

3 != 4

> mon.premier.tab[1,]

> vecteur.car[vecteur.car == "bleu"]

[1] TRUE

x2 > 2 & x2 < 5

Extrait la colonne 3

> mon.premier.tab[,3]

[1] FALSE FALSE TRUE TRUE FALSE

plus petit que

plus petit ou égal à

plus grand que

plus grand ou égal à

exactement égal à

pas égal à

x OU y

x ET y

<

<=

>

>=

==

!=

x | y

x & y

> mon.premier.tab[2,4]

Extrait le second élément de la colonne 4

On demande à R d'extraire toutes les valeurs égales à "bleu" dans le vecteur vecteur.car.

Extrait les lignes 2 à 4

> mon.premier.tab[c(2:4),]

> mon.premier.tab$Code_Site

Extrait la variable "Code_Site" avec le symbole $

> mon.premier.tab[,c("Code_Site","pH.sol")]

Extrait les variables "Code_Site" et "pH.sol"

***Les quatres premiers exemples sont aussi valides pour les matrices.

Atelier 1 :

Introduction à R

Fonctions

Site web: http://qcbs.ca/wiki/r/atelier1

Arguments

Défi 11

Quelques fonctions communes

Fonctions

Défi 12

Fonctions

Arguments

Pour utiliser une fonction (ou l'appeler), la commande doit être structurée correctement et respecter les "règles de grammaire" du langage R (sa syntaxe)

Tous les arguments ont un nom qui peut être indiqué lorsqu'on appelle une fonction.

Si le nom n'est pas indiqué, l'ordre des arguments est primordial.

Si le nom est indiqué, l'ordre des arguments n'a pas d'importance.

plot(x, y) est une fonction qui crée un graphique de y en fonction de x. Cette fonction nécessite deux arguments nommés x et y. Quelles sont les différences entre les lignes de codes suivantes ?

Les arguments sont des valeurs utilisées comme instructions pour que la fonction puisse s'exécuter.

Des objets peuvent également être passés à une fonction:

head

length

str

names

typeof

class

attributes

library

ls

rm

setwd

getwd

file.choose

a) - Crééz un vecteur nommé a contenant tous les nombres de 1 à 5

- Crééz un objet nommé b avec une valeur de 2

- Ajoutez a à b en utilisant l'opérateur "+" et enregistrez le résultat dans un objet appelé result_add

- Ajoutez a à b en utilisant la fonction sum() et enregistrez le résultat dans un objet appelé result_sum

- Comparez les objets result_add et result_sum. Sont-ils différents?

b) Ajoutez 5 à result_sum en utilisant la fonction sum().

c

seq

rep

tapply

lapply

aggregate

merge

cbind

rbind

unique

help ?

help.search ??

help.start

sqrt

log

exp

max

min

sum

mean

sd

var

summary

plot

par

paste

format

Les fonctions sont des outils créés pour vous simplifier la vie

Elles vous permettent d'éxecuter rapidement des opérations sur des objets sans avoir à écrire toutes les étapes mathématiques

Une fonctions requiert des valeurs d'entrée appelées arguments (ou paramètres). Elle effectue alors des opérations cachées sur ces arguments et renvoie une valeur de retour.

> a <- 3

> b <- 4

> sum(a, b)

> sum(1, 2)

> a <- 1:100

> b <- a^2

> plot(a, b)

> plot(b, a)

> plot(x=a, y=b)

> plot(y=b, x=a)

log(8, base=2)

[1] 7

Défi 11

Solution

Paquets

Défi 12

Solution

a)

> a <- 1:5

> b <- 2

> result_add <- a + b

> result_sum <- sum(a, b)

> result_sum

> result_add

Les paquets (packages en anglais) sont des regroupements de fonctions et de jeux de données partageant un thème similaire.

Ex : statistiques, analyse spatiale, graphiques…

Tout le monde peut développer des paquets et les rendre disponibles aux autres utilisateurs de R.

Les paquets sont généralement disponibles via le Comprehensive R Archive Network (CRAN)

http://cran.r-project.org/web/packages/

Actuellement, plus de 5877 paquets sont disponibles librement.

[1] 3 4 5 6 7

[1] 17

L'opération sur le vecteur ajoute deux à chaque élément. Le résultat est un vecteur.

La fonction sum() additionne toutes les valeurs de a et b. C'est équivalent à 1 + 2 + 3 + 4 + 5 + 2. Le résultat est un nombre.

b)

> sum(result_sum, 5)

[1] 22

Paquets

Pour installer des paquets sur votre ordinateur, utilisez la fonction install.packages()

> install.packages("ggplot2")

Pour utiliser une fonction se trouvant au sein d'un paquet, l'installer n'est pas suffisant. Il faut également utiliser la fonction library() à chaque début de session R pour “charger” le paquet.

> qplot(1:10, 1:10)

Error: could not find function "qplot"

Centre de la science de la biodiversité du Québec

Série d'ateliers R

Atelier 1 :

Introduction à R

Obtenir de l'aide & ressources supplémentaires

Merci d'avoir participé!

Nous voulons vos conseils: https://docs.google.com/spreadsheet/ccc?key=0AhCQzc0AsZ0OdHZoWE1PUi1kNmttZV96VEViY0sxVEE#gid=0

Obtenir de l'aide avec les fonctions

Getting help with functions

Défi 13

Solution

Défi 13

Défi 14

Quelques sites web sur R utiles

Quelques livres sur R utiles

D'autres façons d'obtenir de l'aide

Défi 14

Solution

a)

> seq(from=0, to=10, by=2)

[1] 0 2 4 6 8 10

OK! Utilisons la fonction seq()!!

Mais comment fonctionne-t-elle? De quels arguments a-t-elle besoin?

Pour trouver des informations sur une fonction, utilisez

?fonction.

En règle générale, votre meilleure source d'informations sera votre moteur de recherche préféré (Google, Bing, Yahoo, etc.)

Voici quelques conseil pour les utiliser efficacement:

On aurait aussi pu écrire

Trouvez la fonction appropriée pour effectuer les opérations suivantes :

a) Calculer la racine carrée d'un nombre

b) Calculer la moyenne de nombres

c) Combiner des tableaux de données par colonne (i.e. un par-dessus l'autre)

d) Faire une liste de tous les objets de la session

> seq(0, 10, 2)

WOW!!! R est tellement génial! Il y a tellement de fonctions pour faire ce que je veux!!!

Mais euh... comment je les trouve exactement?

Pour trouver une fonction pouvant réaliser une action spécifique, on peut utiliser l'opérateur ?? ou la fonction help.search(). Pour effectuer une recherche, tapez ?? suivi d'un terme relié à votre recherche.

Par exemple, supposons que l'on souhaite créer une séquence de nombres pairs entre 0 et 10. On effectue une recherche avec le terme "sequence".

Attention : les recherches se font en anglais

Nom du paquet

Nom de la fonction

Courte description

Comment appeler la fonction

a) Créez une séquence de nombres pairs de 0 à 10 en utilisant la fonction seq().

b) - Créez un vecteur de vos nombres préférés sans qu'il ne soit en ordre croissant ou décroissant.

- Trouvez comment mettre ce vecteur en ordre en tapant dans la console

?sort

- Ordonnez votre vecteur en ordre décroissant.

> ?seq

a) sqrt

b) mean

c) cbind

d) ls

[1] 0 2 4 6 8 10

Description de tous les arguments et comment on les utilise

b)

  • Faites votre recherche en anglais
  • Utilisez le mot-clé "R" au début de votre recherche
  • Définissez précisément ce que vous recherchez
  • Apprenez à lire les forums de discussions. Il y a de bonnes chances pour que d'autres personnes aient déjà eu votre problèmes et posé la question.
  • N'hésitez pas à faire d'autres recherches avec des mots-clé différents!

> numbers <- c(4, 55, 6, 22, 3)

> sort(numbers, decreasing=TRUE)

Description détaillée de comment les fonctions marchent et leurs caractéristiques

Description de la valeur de retour

[1] 55 22 6 4 3

Autres fonctions en rapport qui pourraient être utiles

> ??sequence

package_name::function_name

> library("ggplot2")

> qplot(1:10, 1:10)

> plot(x=a, y=b)

Même chose que

plot(a, b)

  • http://stats.stackexchange.com
  • https://www.zoology.ubc.ca/~schluter/R/
  • http://www.statmethods.net/
  • http://www.rseek.org/
  • http://www.cookbook-r.com/
  • http://cran.r-project.org/doc/contrib/Baggott-refcard-v2.pdf

Functions list

Function description

Nom de l'argument

Virgule

Autres fonctions décrites dans cette page d'aide

Nom de la fonction

> plot(b, a)

La forme du graphique a changé, l'ordre des arguments est important

Argument 2

nom d'objet <- valeur d'intérêt

Il faut l'écrire 2 fois !

Liste des arguments

Si nom = valeur est présent, une valeur par défaut est fournie si l'argument est manquant. L'argument devient alors optionnel.

Argument 1

Ceci est la valeur de retour de la fonction

> plot(a, b)

> plot(y=b, x=a)

Même chose que plot(a, b).

Le nom des arguments est fourni, l'ordre n'est pas important

Parenthèses

Learn more about creating dynamic, engaging presentations with Prezi