Restart 1: Objets de base

Lise Vaudor

01/02/2021

Création d’objets

Nous avons vu dans la section précédente comment créer des objets très simples et comment les assigner à un environnement.

Il y a en fait une multitude de types d’objets possibles dans R. Ici nous allons aborder

Création de vecteurs

On appelle vecteur toute séquence d’éléments de même type, par exemple:

v1=

    2.3 3.6 1.1 2.4 2.5 10.2 5.1 2.0 

v2=

    "Paris" "Lyon" "Marseille" "Rennes" "Montpellier"

ou v3=

    TRUE FALSE FALSE TRUE TRUE

En R, ces vecteurs s’écrivent:

v1 <- c(2.3,3.6,1.1,2.4,2.5,10.2)
v1
[1]  2.3  3.6  1.1  2.4  2.5 10.2
v2 <- c("Paris","Lyon","Marseille")
v2
[1] "Paris"     "Lyon"      "Marseille"
v3 <- c(TRUE,FALSE,FALSE,TRUE,TRUE)
v3
[1]  TRUE FALSE FALSE  TRUE  TRUE

Les éléments d’un vecteur peuvent être nommés de la façon suivante:

vn <- c(metro=1,boulot=8,dodo=9,autre=6)
vn
 metro boulot   dodo  autre 
     1      8      9      6 

Création de vecteurs: séquences, répétitions

On peut également créer des vecteurs correspondant à:

  • des séquences de valeurs régulièrement espacées
# valeurs de 0 à 10 par pas de 2
v4 <- seq(from=0,to=10,by=2)
v4
[1]  0  2  4  6  8 10
# 5 valeurs regulierement espacees de 2 a 13
v5 <- seq(from=2,to=13,length.out=5)  
v5
[1]  2.00  4.75  7.50 10.25 13.00
# nombres entiers de 0 a 7
v6 <- 0:7
v6
[1] 0 1 2 3 4 5 6 7

ou bien:

  • des séquences de valeurs répétées
# repetition de "date1" 5 fois
v7<-rep("date1",5)
v7
[1] "date1" "date1" "date1" "date1" "date1"
# repetition du vecteur v6 3 fois
v8<-rep(v6,3)
v8
 [1] 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6
[24] 7

Classes des objets

Les vecteurs peuvent être de classes différentes selon le type de valeurs qu’ils contiennent (par contre toutes les valeurs d’un vecteur sont supposées être d’un même type).

Ils peuvent par exemple être de mode

  • numérique
  • caractère
  • logique, c’est à dire que les valeurs qu’ils contiennent sont de type vrai / faux (TRUE / FALSE ou T / F).

Par exemple, pour v1, v2, et v3:

v1 <- c(2.3,3.6,1.1,2.4,2.5,10.2,5.1,2.0)
class(v1)
[1] "numeric"
v2 <- c("Paris","Lyon","Marseille")
class(v2)
[1] "character"
v3 <- c(TRUE,FALSE,FALSE,TRUE,TRUE)
class(v3)
[1] "logical"

Création de vecteurs

Remarquez que l’on peut aussi utiliser c() pour combiner plusieurs vecteurs:

v4
[1]  0  2  4  6  8 10
v5
[1]  2.00  4.75  7.50 10.25 13.00
vglobal<-c(v4,v5)
vglobal
 [1]  0.00  2.00  4.00  6.00  8.00 10.00  2.00
 [8]  4.75  7.50 10.25 13.00

Si l’on tente quelque chose comme

v6
[1] 0 1 2 3 4 5 6 7
v7
[1] "date1" "date1" "date1" "date1" "date1"
vessai=c(v6,v7)
vessai
 [1] "0"     "1"     "2"     "3"     "4"    
 [6] "5"     "6"     "7"     "date1" "date1"
[11] "date1" "date1" "date1"
R ne renvoie pas de message d’erreur, mais fait en sorte que toutes les valeurs de vessai soient d’un même type (des chaînes de caractère ici: voyez les guillemets autour des valeurs de v7).

Valeurs manquantes

Il peut arriver que certaines valeurs d’un objet soient non renseignées. En R, ces valeurs s’écrivent NA (pour not available).

Par exemple:

v9 <- c(3.2, NA, 8.9, 42.3, 59.2, NA)

Création de facteurs

Les facteurs ressemblent généralement à des vecteurs de mode caractère, à la nuance près qu’ils comprennent généralement plusieurs niveaux, comme par exemple

f1=factor(c(rep("date1",3),rep("date2",3)))
f1
[1] date1 date1 date1 date2 date2 date2
Levels: date1 date2
levels(f1)
[1] "date1" "date2"
La nuance entre vecteurs et facteurs est importante pour un certain nombre de fonctions implémentées dans R, il est donc assez souvent nécessaire de convertir les vecteurs en facteurs et inversement.

Création de listes

Une liste est un assemblage d’objets qui peuvent être de natures et/ou de tailles différentes. Par exemple, la liste l1

l1=list(sites=c("Paris","Lyon"),
        nb=c(1100,332,52,532,33,66,22,114))
l1
$sites
[1] "Paris" "Lyon" 

$nb
[1] 1100  332   52  532   33   66   22  114

rassemble un vecteur de taille 2 et un vecteur de taille 8 au sein d’un même objet.

En pratique, de nombreuses fonctions de R renvoient un objet de type liste (par exemple, un objet “régression linéaire”, renvoyé par la fonction lm, comprend entre autres choses un vecteur de coefficients de la régression et un vecteur de résidus de la régression (donc deux vecteurs de tailles différentes).

Création d’objets: tableaux de données

Comme une matrice, un tableau de données compte plusieurs lignes et colonnes. En revanche, les colonnes (ou variables) d’un tableau de données peuvent être de types différents, et sont nommées.

Voici comment créer un tableau de données (tibble) sous R, en assemblant plusieurs vecteurs de même taille:

t1 <- tibble(Espece = c("Chien","Dauphin",
                        "Chat","Eponge"),
             Nom = c("Lassie","Flipper",
                     "Garfield","Bob"),
             Date = c(1940,1964,1978,1999))
t1
# A tibble: 4 x 3
  Espece  Nom       Date
  <chr>   <chr>    <dbl>
1 Chien   Lassie    1940
2 Dauphin Flipper   1964
3 Chat    Garfield  1978
4 Eponge  Bob       1999

Remarque: les objets de type data.frame sont comparables aux tibbles, avec quelques différences notamment liées au typage des variables et à l’affichage.

Création d’objets, conversion d’objets

Pour interroger R quant au type (vecteur, facteur, tableau, matrice, etc.) ou au mode (numérique, caractère, logique, etc.) d’un objet, on utilise les fonctions de type **is.____**.

Par exemple:

v6
[1] 0 1 2 3 4 5 6 7
is.factor(v6)
[1] FALSE
is.numeric(v6)
[1] TRUE

On peut convertir un objet d’un type ou mode à un autre en utilisant les fonctions de type **as.____**. Par exemple,

v6f <- as.factor(v6)
v6f
[1] 0 1 2 3 4 5 6 7
Levels: 0 1 2 3 4 5 6 7

convertit le vecteur v6 en facteur pour créer v6f.

Indexation

On peut s’intéresser à une partie d’un objet, par exemple un ou plusieurs éléments d’un vecteur ou d’un facteur.