Programmer en R/Manipuler les nombres
En R, il y a deux types numériques principaux :
- les entiers,
- les nombres à virgule flottante.
Les deux types sont manipulés à travers les ensembles : vecteurs, matrices, ...
Vecteur de nombres
[modifier | modifier le wikicode]Un vecteur de nombre est déclaré en appelant la fonction c
(Concatenate) qui crée un vecteur par concaténation d'éléments de même type.
Exemple :
## Vecteur de nombres à virgule flottante :
> a = c(12,7,5.3,9.1,24)
> a
[1] 12.0 7.0 5.3 9.1 24.0
> typeof(a)
[1] "double"
Pour spécifier des entiers, il faut suffixer les nombres par la lettre L pour Long :
## Vecteur de nombres entiers :
> a = c(12L,7L,5L.3L,9L,24L)
> a
[1] 12 7 5 9 24
> typeof(a)
[1] "integer"
Séquence de nombres
[modifier | modifier le wikicode]Dans le cas d'une séquence continue d'entiers compris entre deux bornes, une autre manière de générer un vecteur les contenant est d’utiliser l'opérateur deux-points :
placés entre les bornes :
## Vecteur de tous les nombres entiers entre 1 et 10
> 1:10
[1] 1 2 3 4 5 6 7 8 9 10
La fonction seq
permet de générer une séquence de nombres avec un pas différent, soit spécifié explicitement, soit en spécifiant le nombre total de nombres dans la séquence.
Exemple :
# Séquence de nombre de 1 à 21 par incrément de 2
> seq(from = 1, to = 21, by = 2)
[1] 1 3 5 7 9 11 13 15 17 19 21
# Séquence de 15 nombres de 1 à 21 par incrément constant
> seq(0, 21, length.out = 15)
[1] 0.0 1.5 3.0 4.5 6.0 7.5 9.0 10.5 12.0 13.5 15.0 16.5 18.0 19.5 21.0
Répétition d'une séquence
[modifier | modifier le wikicode]La fonction rep
permet de répéter une séquence un nombre spécifié de fois, de deux manières différentes.
Répéter toute la séquence :
> rep(1:4, times = 2)
[1] 1 2 3 4 1 2 3 4
Répéter chaque élément :
> rep(1:4, each = 2)
[1] 1 1 2 2 3 3 4 4
Conversion
[modifier | modifier le wikicode]La conversion en un type numérique se fait à l'aide de 3 fonctions :
as.numeric(v)
- Convertir en nombre (à virgule flottante),
as.double(v)
- Convertir en nombre à virgule flottante,
as.integer(v)
- Convertir en nombre entier.
Exemple :
## Vecteur de nombres entiers :
> a = c(12L,7L,5L.3L,9L,24L)
> as.double(a)
[1] 12.0 7.0 5.0 9.0 24.0
> b = c(12,7,5.3,9.1,24)
> as.integer(b)
[1] 12 7 5 9 24