Aller au contenu

Programmer en R/Manipuler les nombres

Un livre de Wikilivres.

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

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