# Programmer en R/Les types de base
## R comme une calculatrice

En mode interactif, il est possible d'utiliser R comme une calculatrice. Le séparateur décimal est le point. La notation exponentielle utilise le e : 4e+5 pour 4·10$^5$. Pour les nombres complexes, l'imaginaire i se note 1i.
Ci-dessous quelques exemples de calculs.
Le langage R permet de faire des calculs, en utilisant le signes classiques +, -, *, /, ^ (élévation à la puissance), et les fonctions classiques sqrt (racine carrée, square root), exp (exponentielle), cos, acos, cosh, round (arrondi mathématique), floor (troncature), … Les angles sont exprimés en radians. Les fonctions mathématiques standard sont :
La division euclidienne se fait avec %/% : a%/%b donne normalement la même chose que floor(a/b), mais les algorithmes étant différents, les résultats peuvent différer si a et b ne sont pas des entiers. Le reste (modulo) s'obtient avec a%%b.
Ainsi, la parité d'un entier a se teste avec
(le reste de la division par deux est-il nul ?)
Notons que la précision de calcul est limitée :
La valeur de sin(π) est normalement de 0.

## Constantes prédéfinies

Les constantes prédéfinies dans R sont :
* pi : π (≈ 3,14) ;
* LETTERS : lettres capitales de l'alphabet ; la n-ième lettre s'obtient par LETTERS[n] ;
* letters : lettres minuscules ;
* month.name : nom des mois en anglais ("January" "February" "March"…) ;
* month.abb : nom des mois abrégés en anglais ("Jan" "Feb" "Mar"…) ;
* 1i : imaginaire pur i.

## Les variables

Comme tout langage, R dispose de variables.
Le typage des variables est implicite : il est déterminé lors de l'initialisation de la variable. Les variables n'ont pas besoin d'être déclarées au préalable, leur portée est celle du groupe d'instruction dans lequel elles ont été initialisées.
Il y a deux manières pour affecter une variable, soit avec le signe =, soit avec <- :
Un nom de variable peut être composé de lettres, chiffres, et des caractères « . » (point) et « _ » (tiret de soulignement, underscore), mais :
* il doit commencer par une lettre ou un point ;
* s'il commence par un point, le deuxième caractère ne doit pas être un nombre.
L'interpréteur R est sensible à la casse. D'autres caractères peuvent être autorisés selon la configuration régionale, comme par exemple les lettres accentuées, mais cela réduit la portabilité du code.
La commande ls fournit la liste des variables créées (ne pas oublier la paire de parenthèses vide). On peut supprimer une variable x avec la commande rm(x) (remove).
Notons que certains noms d'une lettre sont déjà utilisés par R, et ne devraient donc pas être utilisés comme nom de variable. Il s'agit de :

## Les nombres

Le type de nombre est déterminé de manière implicite lors de l'initialisation d'une variable. R dispose d'entiers (integer), de nombres en virgule flottante avec une double précision (double), et de nombre complexe (complex). Les types suivent la norme IEEE 754.
La fonction is retourne le type de l'objet. Pour forcer l'utilisation d'un type particulier on peut utiliser les fonctions as.integer, as.complexet as.double.
Les valeurs « infini » et « (ceci n'est) pas un nombre » (not a number, selon IEEE 754) sont notées respectivement Inf et NaN. Elles sont considérés comme des nombres de type double.

## Comparaison et logique booléenne

Les valeurs booléennes, appelées « logiques » (logic) dans R, sont TRUE pour vrai et FALSE pour faux (en lettres capitales) ; on peut les abréger en T et F. Elles s'obtiennent avec des comparaisons, qui se font avec les signes classiques
    <, <=, >, >=. Pour l'égalité, on utilise ==, et pour l'inégalité, !=.
La comparaison d'un vecteur avec une valeur donne un vecteur de booléens :
La comparaison de deux vecteurs donne un vecteur booléen issu de la comparaison terme à terme
L'opération « ou » se note avec le tube |, le « et » avec la perluette & et le « non » avec le point d'exclamation ! :
Le « ou exclusif » se note xor ; c'est une fonction :
Ces opérateurs ou fonctions font des comparaisons terme à terme entre vecteurs de booléens.
Les fonctions any (« au moins un ») et all (« tous ») appliquent respectivement le « ou » et le « et » sur tout un vecteur.

## Les chaînes de caractères

Les chaines de caractère sont délimitées par les caractères " ou '.

## Scalaire ou vecteur ?

Nous avons vu ici des variables de type « scalaire », c'est-à-dire ne contenant qu'une seule valeur. Pour R, un scalaire est un vecteur d'une composante. Les opérations que nous avons vues s'appliquent donc également aux vecteurs, mais par défaut, elles s'appliquent terme à terme. Par exemple, x*y crée le vecteur (x[1]×y[1], x[2]×y[2], …).
Ceci est étudié dans le chapitre suivant Les vecteurs.

## Notes et références

* ↑ contrairement à l'habitude, round(1.5) = 1 ; par contre, round(1.5) = 2
* ↑ il distingue les minuscules et les capitales