getwd()
. C'est là qu'il va chercher par défaut
les fichiers à charger ou à exécuter. On peut le changer
par la commande setwd
. À défaut, il faut saisir le chemin d'accès
complet du fichier que l'on souhaite charger ou sauvegarder. Le plus
facile est d'utiliser le menu de l'interface
Bien que l'encodage des données directement dans l'environnement R soit possible, dans la majorité des cas les données à analyser proviennent de sources externes sous forme de fichiers. De plus, les objets créés doivent pouvoir être sauvegardés entre les différentes sessions afin de pouvoir reprendre le travail là où on l'avait laissé. C'est pourquoi divers outils d'accès aux fichiers ont été développés sous R. On distingue ainsi les accès aux fichiers propriétaires de R, aux fichiers ASCII ainsi qu'aux fichiers provenant d'autres logiciels d'analyse statistique.
Il convient de distinguer plusieurs sortes de fichiers.
save
et rappelés par load
. Ceci
permet de reprendre un calcul en conservant les valeurs déjà affectées.
.r
.
Ils contiennent des suites d'instructions R, qui sont exécutées en
les copiant
successivement dans la console.
.r
.
Ils contiennent la définition d'une ou plusieurs
fonctions. Ces fonctions sont disponibles pour R
après les avoir chargées par source()
.
Le format d'échange le plus courant en ce qui concerne les données
brutes reste le fichier ASCII. La lecture de tels fichiers est prise
en charge par la commande élémentaire scan()
. Les arguments
de cette fonction permettent de décrire précisément la structure
interne du fichier texte afin d'interpréter correctement les
caractères lus et de transférer le résultat de cette
interprétation dans les objets adéquats.
Afin de faciliter la lecture des fichiers de données structurés en
colonnes, plusieurs commandes spécifiques ont été
développées au départ de la fonction scan()
. Ces
fonctions (read.table()
et ses dérivés) automatisent la
lecture des fichiers de données ASCII standards (CSV, texte
délimité, largeur fixe, ...) et stockent leurs résultats
sous forme de tableaux de données prêts à l'analyse. Bien
qu'elles soient plus spécifiques que scan()
, ces fonctions
conservent toutefois une grande adaptabilité grâce à
l'utilisation de nombreux arguments permettant de préciser le format
interne du fichier (présence de titres de colonnes, type de
séparateur décimal utilisé, symbole(s) de valeur manquante,...).
L'exportation de tableaux de données sous forme de fichiers ASCII
standards peut être réalisée par la fonction
write.table()
, complémentaire des précédentes, et
présentant les mêmes possibilités en matière de formatage des
résultats que celles-ci.
Lorsque les données ont été sauvegardées sous un format
propriétaire d'un logiciel statistique tiers inaccessible à
l'utilisateur, il est nécessaire de disposer d'outils permettant
leur transfert vers le système R afin de pouvoir les analyser. La
libraire foreign offre ces outils indispensables pour une
sélection des logiciels statistiques les plus courants, à savoir
Minitab, SAS, SPSS et Stata.
Ainsi, la fonction read.tmp()
importe les fichiers «Minitab
Portable Worksheet »sous forme d'une liste, de même que
read.xport()
prend en charge les fichiers SAS Transport (XPORT)
et read.spss()
les données enregistrées au moyen des
commandes «save »et «export »de SPSS.
Enfin, les fonctions read.dta()
et write.dta()
permettent l'importation et l'exportation des fichiers binaires Stata
versions 5.0, 6.0 et 7.0.
Définition de nouvelles fonctions
L'utilisation de R consiste en général à étendre le langage par
de nouvelles fonctions, définies par des séquences d'instructions.
Il est possible de définir des fonctions personnalisées soit
directement au départ de la console, soit via un éditeur de texte
externe grâce à la commande fix(nom_fonction)
. La seconde
possibilité (conseillée) permet la correction du code en cours
d'édition, tandis que la première s'effectue ligne par ligne, sans
retour en arrière possible. Vous pouvez aussi copier-coller le code
complet, préparé dans un éditeur de texte, dans la console R.
D'une manière générale, la définition d'une fonction passe par l'expression suivante :
nom_fonction <- function(arg1[=expr1], arg2[=expr2], ...){ bloc d'instructions }
Les accolades signalent à l'interpréteur de commande le début et la fin du code source de la fonction ainsi définie, tandis que les crochets ne font pas partie de l'expression mais indiquent le caractère facultatif des valeurs par défaut des arguments. Il est également possible de créer une fonction personnalisée au départ d'une fonction existante, tout en conservant l'original intact, grâce à
nom_fonction2 <- edit(nom_fonction1)
Lors de l'exécution, R renvoie par défaut le résultat de la
dernière expression évaluée dans la fonction. Il est possible de
préciser le résultat renvoyé grâce à la fonction
return(objet1[, objet2, ...])
, résultat qui prend la forme
d'une liste nommée si plusieurs arguments sont spécifiés.
Les arguments sont passés à la fonction par valeur et leur
portée ainsi que celle de toute assignation classique à
l'intérieur d'une fonction est locale. Lors de l'exécution, une
copie des arguments est transmise à la fonction, laissant les
originaux intacts. Les valeurs originelles des arguments ne sont donc
pas modifiées par les expressions contenues dans la fonction.
x <- 2 carre <- function(z) {z<-z*z; return(z)} carre(x) # retourne [1] 4 x # retourne 2
Compte tenu de la puissance et de la concision du langage,
il est fortement recommandé d'ajouter des
commentaires au code des fonctions, en les faisant précéder du
symbole dièse #
. La suite de la ligne est alors ignorée
lors de l'interprétation de la fonction et peut donc être
complétée par un commentaire libre. Il est important de choisir
des
noms différents pour les nouvelles fonctions, sans quoi les
définitions se superposeront, y compris à celles des fonctions
prédéfinies.
Quand on définit une nouvelle fonction numérique, on a toujours intérêt
à faire en sorte qu'elle puisse s'appliquer correctement à une
matrice, ce qui impose de veiller aux multiplications terme à terme.
Style de programmation La philosophie de R est celle d'un langage fonctionnel. Au lieu de créer un logiciel avec programme principal et procédures, on étend le langage par les fonctions dont on a besoin. Le rôle du programme principal est joué par un fichier de commandes appelé script contenant essentiellement des appels de fonctions.
Certaines erreurs difficiles à trouver proviennent de confusions entre
noms de variables ou de fonctions. R garde en mémoire tous les
noms introduits tant qu'ils n'ont pas été libérés par rm
.
Il est donc prudent de donner des noms assez explicites aux
variables. Les variables introduites dans la session ou dans les
fichiers de commandes sont globales. Par
défaut, toutes les variables introduites à l'intérieur d'une fonction
sont locales. C'est une des raisons pour lesquelles on a intérêt
à définir de nouvelles fonctions plutôt que d'utiliser des
fichiers de commande exécutables.
R propose les commandes des langages de programmation classiques.
Commandes principales | ||||
Pour | for |
(i in vecteur}){ |
instruction; |
} |
Tant que | while |
(booleen){ |
instruction |
} |
Si | if |
booleen then{ |
instruction |
} |
Sinon | else |
instruction |
} |