Introduction (ultra) rapide en R



Documents pareils
Introduction à MATLAB R

Les concepts de base, l organisation des données

STAGE IREM 0- Premiers pas en Python

Introduction à R. Florence Yerly. Dept. de mathématiques, Université de Fribourg (CH) SP 2011

Cours 1. I- Généralités sur R II- Les fonctions de R et autres objets III-Les vecteurs

Python - introduction à la programmation et calcul scientifique

Calcul Formel et Numérique, Partie I

Présentation du langage et premières fonctions

R01 Import de données

Plan du cours Cours théoriques. 29 septembre 2014

LES TYPES DE DONNÉES DU LANGAGE PASCAL

1 Introduction - Qu est-ce que le logiciel R?

TP 1. Prise en main du langage Python

Présentation du logiciel

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Bases de programmation. Cours 5. Structurer les données

Cours 7 : Utilisation de modules sous python

Cours Informatique Master STEP

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Programmation Web. Madalina Croitoru IUT Montpellier

Compléments de documentation Scilab : affichage de texte et formatage de nombres

L informatique en BCPST

1 Recherche en table par balayage


Créer le schéma relationnel d une base de données ACCESS

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Initiation au logiciel R

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Premiers Pas en Programmation Objet : les Classes et les Objets

Algorithmique et Programmation, IMA

INTRODUCTION AU LOGICIEL R

Création et Gestion des tables

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Évaluation et implémentation des langages

EXCEL TUTORIEL 2012/2013

Cours d initiation à la programmation en C++ Johann Cuenin

Solutions en ligne Guide de l utilisateur

OCL - Object Constraint Language

Gestion des données avec R

1. Structure d'un programme FORTRAN 95


INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Table des matières L INTEGRATION DE SAS AVEC JMP. Les échanges de données entre SAS et JMP, en mode déconnecté. Dans JMP

Calcul Formel et Numérique, Partie I

Initiation à la Programmation en Logique avec SISCtus Prolog

V- Manipulations de nombres en binaire

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Initiation à la programmation en Python

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Notice d utilisation

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Java DataBaseConnectivity

Maple: premiers calculs et premières applications

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Les structures. Chapitre 3

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

MODE OPERATOIRE OPENOFFICE BASE

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

1 Description générale de VISFIELD

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Jérôme Mathieu janvier Débuter avec R. Ce document est disponible sur le site web :

TUTORIEL Qualit Eval. Introduction :

Séance 0 : Linux + Octave : le compromis idéal

Guide utilisateur i-milo >> Décisionnel

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Studio. HERITIER Emmanuelle PERSYN Elodie. SCHMUTZ Amandine SCHWEITZER Guillaume

Tenrox. Guide d intégration Tenrox-Salesforce. Janvier Tenrox. Tous droits réservés.

données en connaissance et en actions?

Utilisation d objets : String et ArrayList

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

TP1 - Prise en main de l environnement Unix.

Services bancaires par Internet aux entreprises. Guide pratique pour : Rapports de solde Version

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Présentation du PL/SQL

Cours d Algorithmique et de Langage C v 3.0

Chapitre 1 Qu est-ce qu une expression régulière?

3.2. Matlab/Simulink Généralités

Introduction à Microsoft InfoPath 2010

Conventions d écriture et outils de mise au point

Groupe Eyrolles, 2006, pour la présente édition, ISBN :

TD3: tableaux avancées, première classe et chaînes

Dans l'article précédent, vous avez appris

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

TP, première séquence d exercices.

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

IMPORTATION, CRÉATION, MANIPULATION, EXPORTATION DE DONNÉES STATISTIQUES

Vérification de programmes et de preuves Première partie. décrire des algorithmes

R, Bonnes pratiques. Christophe Genolini

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Découverte de Python

COURS DE MS EXCEL 2010

Éléments de programmation et introduction à Java

Devenez un véritable développeur web en 3 mois!

Déploiement de SAS Foundation

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2

8. Gestionnaire de budgets

Service des ressources informatiques - Conseil Scolaire de District Catholique Centre-Sud Page 1

Transcription:

Introduction (ultra) rapide en R Table des matières 1 En préambule 2 2 Bases de language 3 2.1 Affectation.......................................... 3 2.2 Pièges de noms de variables................................. 3 2.3 Vecteurs............................................ 3 2.4 Types............................................. 5 2.5 Opérateurs booléens..................................... 5 2.6 Listes............................................. 5 2.7 Matrices............................................ 5 2.8 Data frames.......................................... 6 2.9 Les valeurs manquantes et NaNs.............................. 6 2.10 Fonctions........................................... 6 2.11 Portée de variables...................................... 7 2.12 Les principales fonctions génériques............................. 8 2.13 Divers............................................. 8 1

1 En préambule Généralités Même si vous n êtes pas un statisticien, vous pouvez avoir au moins une raison d utiliser R que vous soyez spécialiste en EDP ou en traitement d image, les chances sont élevées qu un jours vous avez besoin de faire une analyse statistique de vos données. R est parfait pour faire des stats. Il est un peu comme un enfant bâtard de l amour SAS et MATLAB s il était élevé avec des theories modernes de programmation objet et libre source. Comme SAS, non seulement il a tous les outils statistiques de base à votre disposition, mais il contient également des piles de bibliothèques de toutes les méthodes statistiques puissantes et obscures dont vous pouvez jamais avoir besoin. C est ainsi que le code, une fois vous ayez rempli votre tête de sa syntaxe de base, est très simple. Vous pouvez faire une analyse de variance sur votre jeu de données en trois lignes. Comme MATLAB, c est un langage de script à la base. Si après l exécution de votre programme vous voulez faire quelque chose avec les résultats, vous n avez pas besoin d écrire et exécuter un programme de plus, mais simplement le faire à l invité de commande R. Comme dans MATLAB, vous pouvez lancer vos analyses à la ligne de commande sans écrire chaque fois un programme. Mais, comme MATLAB, R est un langage de programmation tout modèle, graphique, etc, que vous pouvez implémenter en MATLAB, vous pouvez le faire en R. Et si vous étés vraiment faignant, il y a même un package de R qui permet d utiliser dans R la syntaxe MATLAB, ainsi vous n avez rien à apprendre. Comme Java R est largement orienté objet. Cela signifie que, au lieu de dire executer mon analyse de variance et obtenir des résultats, vous créez un objet anova avec vos données. L objet contient toute l information sur l analyse de variance dont vous pouvez avoir besoin. Pour voir cette information, ou de l utiliser plus tard, vous devez appeler une fonction sur l objet anova lui-même. Par exemple, my.anova<-anova(response treatment); summary(anova). Enfin, même si R peut être assez opaque, avec les fichier d aide approximatifs et incomplets, il fait partie de la communauté open source. Ce qui veut dire qu il a un grand nombre de gens là-bas qui peaufinent, modifient, implémentent de nouvelles méthodes sans cesse, et répondent aux questions. 1 Cela dit, R est aussi une mise en œuvre open source de S-Plus, malheureusement. Help de R Vous pouvez obtenir de l aide sur toutes les fonctions spécifiques lors de l exécution de R avec help (fonction) ou?fonction, ou en demandant un exemple avec exemple(fonction). En outre, si la programmation vous terrifie et il vous faut à tout pris une interface, de type point n click, il y a une option pour vous : assurez-vous que vous avez installé X11 sur votre ordinateur avec la bibliothèque tcltk, et puis vous pouvez exécuter le package R Commander, qui crée un GUI permettant d utiliser les (beaucoup de) fonctionnalités de R. Commentaires Python ou Perl. Le commentaire commence par # et continue jusqu à la fin de la ligne, comme dans 1. Allez à http ://www.r-project.org pour se faire une idée. Il y a des listes de diffusion avec des archives consultables, et les gens toujours prêts à vous aider. 2

2 Bases de language R est plus qu un langage de programmation. C est un environnement interactif pour faire des statistiques. Il peut être plus utile de voir R comme ayant un langage de programmation que d être un langage de programmation lui-même. Disons que R est le langage de script pour l environnement R, tout comme VBA est le langage de script pour Microsoft Excel. Dans cette perspective, certaines de ses caractéristiques deviennent plus compréhensibles. 2.1 Affectation L opérateur d affectation dans la recherche est <- comme dans e <- m*c^2 Il est également possible, quoique rare, inverser la flèche et mettre la variable de réception sur la droite, comme dans sm*c^2 -> e Il est possible d utiliser = pour l affectation, mais dans certain je ne serais pas dire quand exactement cela ne marche pas. On évite ce problème en utilisant toujours la flèche. Toutefois, lorsqu il faut fournir des arguments d une fonction par défaut ou appeler une fonctions avec des arguments nommés, vous devez utiliser le = et ne pouvez pas utiliser la flèche. 2.2 Pièges de noms de variables Dans l ancêtre commercial de R (il s agit de l environment S-Plus) le trait de soulignement (underscore) n étant pas autorisé comme un caractère de nom, par convention on utilise le point comme séparateur dans les noms en R. Ainsi, contrairement à son utilisation dans de nombreux langages orientés objet, le caractère. n a pas dans R de signification particulière, à deux exceptions près. Premièrement, la fonction ls() de R qui liste les variables actives de la même façon que la commande ls de shell Unix liste le contenu d un répertoire. Comme la commande de shell qui n affiche pas les fichiers dont les noms commencent par un point, fonction ls() de R ne montre pas les variables dont le nom commence avec le point. En second lieu,... est utilisé pour indiquer un nombre variable d arguments d une fonction. R utilise $ de la même manière que d autres languages utilisent le point. R a plusieurs mot réservés à une lettre : c, q, s, t, C, D, F, I, Et T. (Ces mots ne sont pas exactement réservés, mais il est préférable de les considérer ainsi. Par exemple, c est une fonction built-in pour la création de vecteurs, mais vous pouvez également créer une variable nommée c. Pire encore, T et F ne sont pas synonymes de TRUE et FALSE mais les variables qui ont les valeurs TRUE et FALSE par défaut. Donc quelqu un pourrait utiliser T <- FALSE; F <- TRUE et à inverser leur signification!) 2.3 Vecteurs Le type de données primaire dans R est le vecteur. En principe, il y a deux types de vecteurs. Le premier type est ce que j appellerai un vecteur conteneur. Il s agit d un ensemble ordonné de nombres sans aucune autre structure, comme le conteneur vector<> en C++. La longueur d un vecteur est le nombre d éléments dans le conteneur et les 3

opérations sont appliquées composante par composante. Par exemple, étant donné deux vecteurs x et y de longueur égale, x*y serait le vecteur dont la n-ème composante est le produit des n-èmes composantes de x et y. En outre, log(x) serait le vecteur dont le n-ème élément est le logarithme du n-ème élément de x. Le second type est un vecteur mathématique, un élément d un espace vectoriel, dont la longueur est déterminée par un produit scalaire, et le nombre de composants s appelle dimension. Un vecteur de R est un vecteur conteneur, un ensemble de mesures (nombres), pas un vecteur mathématique. R soutient aussi les opérations avec les vecteurs mathématiques, mais ils sont secondaires dans la conception du language (par exemple, le produit scalaire de deux vecteurs est noté %*%). Cela permet de comprendre, par exemple, la propriété suivante de R inexplicable autrement : dans la plupart des languages ajout d un vecteur de longueur 22 et un vecteur de longueur 45 produit une erreur, on suppose que le programmeur a fait une erreur et le programme est maintenant dans un état indéfini. R, bien au contraire, permet d additionner deux vecteurs, indépendamment de leur longueur relative. Dans ce cas les éléments du vecteur plus court seront répétés autant que ca soit nécessaire pour créer un vecteur de la même longueur que le vecteur plus grand. Il ne s agit pas de tenter d ajouter des vecteurs physiques qui sont incompatibles pour l addition, mais plutôt d une convention de manipulation syntaxique des ensembles de données. (R ne délivre un avertissement lors de l ajout des vecteurs de longueurs différentes que si la longueur du plus grand n est pas un multiple de la longueur du plus court. Ainsi, par exemple, l addition des vecteurs de longueurs 3 et 7 produira un avertissement, mais pas l addition des vecteurs de longueur 3 et 6.) Le langage R ne contient aucune disposition pour les scalaires, rien de tel qu un double dans la famille des languages C. La seule manière de représenter un scalaire dans une variable est d utiliser un vecteur de longueur 1. Et s il est possible de travailler avec des vecteurs comme on pourrait le faire dans un boucle for en C, les operations vectorisées sont plus claires et plus efficaces. Les vecteurs sont créés à l aide de la fonction c. Par exemple, p <- c(2,3,5,7) crée le vecteur pcontenant les quatre nombres premiers. Vecteurs de R sont indexés à partir de 1 et matrices sont stockées en ordre des colonnes, comme dans FORTRAN et pas comme dans C qui stocke les matrices en ordre de lignes. Les éléments d un vecteur peuvent être accédés à l aide de []. Ainsi dans l exemple ci-dessus, p[3] retourne 5. Lors de l affectation d une valeur à un element au-delà de la fin du vecteur, sa longueur augment automatiquement. Les indices négatifs sont autorisés, mais ils ont un sens très particulier. Si x est un tableau en Python ou Perl, x[-n] retourne le n-ème élément en comptant de la fin du vecteur. Dans R, x[-n] retourne une copie de x avec le n-ème élément ôté. Les valeurs booléennes peuvent aussi être utilisées comme des indices, et ils ne se comportent pas comme des nombres entiers. L expression seq(a, b, n) est l equivalent R de [a:n:b] en MATLAB et crée une suite entre a et b en pas de taille n. Par exemple, seq(1, 10, 3) retourne le vecteur contenant 1, 4, 7 et 10. La valeur par défaut de n est 1, et la notation a:b est une abréviation pour seq(a, b) ou seq(a, b, 1). La notation seq(a, b, length=m) est une variante qui définit le pas (b a 1)/m pour que la séquence ait m points. R peut avoir un problème de mémoire si vous faites appel à un nombre très élevé de boucles, même si elles contiennent des instructions très simples. En effet, comme les deux dernières commandes le montrent, l utilisation de boucles est très coûteuse en temps de calcul. Il est ainsi indispensable de limiter l utilisation des boucles en les remplaçant par les outils du calcul vectoriel. 4

2.4 Types Le type d un vecteur est le type des éléments qu il contient et doit être parmi les valeurs suivantes : logical, integer, double, complex, character, raw. Tous les éléments d un vecteur doit avoir le même type. Cette restriction ne s applique pas aux listes. Les fonctions de conversion de type ont dans R des nom comme as.xxx pour la fonction qui convertit son argument au type xxx. Par exemple, as.integer(3.2) retourne 3, et as.character(3.2) renvoie la chaîne (de caractères) 3.2. 2.5 Opérateurs booléens Vous pouvez saisir T ou TRUE pour les vraies valeurs et F ou FALSE pour les fausses valeurs. Les opérateurs & et s appliquent élément-par-élément. Les opérateurs && et sont souvent utilisés dans les instructions conditionnelles et utilisation évaluation lazy comme dans C : l opérateur n évalue pas le deuxième argument, si le résultat est déterminé par le premier. 2.6 Listes Une liste est un vecteur, dont les éléments ne doivent pas tous être du même type. Par exemple, le premier élément d une liste pourrait être un entier et le second élément est une chaîne de caractères ou un vecteur de valeurs booléennes. Les listes sont créées à l aide de la fonction list. Les éléments peuvent être accédés par leur position à l aide [[]]. Les elements nommés peuvent être accédés soit par position ou par nom. Listes à éléments nommés agissent comme structs de C, à l exception pres qu un signe du dollar $ plutôt qu à un point est utilisé pour accéder aux éléments. Par exemple, soit A <- list (name = "Joe", 4, c = foo (3,8,9)) Maintenant a[[1]] et a$name retournent la chaîne Joe. Si vous essayez d accéder à un élément inexistant d une liste, par exemple a[[4]] ci-dessus, vous obtiendrez une erreur. Toutefois, vous pouvez affecter une valeur à un élément inexistant d une liste, étendant ainsi la liste. Si l indice que vous affectez dépasse la fin de la liste, les éléments intermédiaires sont créées et affectées de valeur NULL. Vous pouvez également affecter des valeurs à des champs inexistants par leur nom, comme dans a$baz = TRUE. 2.7 Matrices En un sens R ne supporte pas de matrices, mais seulement des vecteurs. Mais vous pouvez changer la dimension d un vecteur, ce qui en fait essentiellement une matrice. Par exemple, m <- array( c(1,2,3,4,5,6), dim=c(2,3) ) ou, de même, m <- matrix( c(1,2,3,4,5,6), nrow=2, ncol=3) ) crée une matrice m. Cependant, il peut paraître surprenant que la première ligne de m comporte des éléments 1, 3 et 5. En effet, par défaut, R remplit matrices par colonne, comme FORTRAN. Pour remplir m par ligne, il suffit d ajouter l argument by.row = TRUE à l appel de la fonction array : 5

m <- array( c(1,2,3,4,5,6), dim=c(2,3), by.row = TRUE ) Comme pour les vecteurs dans R, les operations arithmétiques sur les matrices sont appliquées élémentpar-élément. Si on cherche à calculer le produit matriciel il faut utiliser l opérateur % *%. Un grand nombre de méthodes matricielles est disponible sous R (il s agit, comme dans le cas de MATLAB, d une integration de LAPACK), leurs nom son, généralement, les même que dans MATLAB : det(), chol(), qr(), mais eigen(), etc. 2.8 Data frames Les data frames sont des listes de données représentant les différents types d informations prises à la même heure, lieux, etc. Un exemple simple serait le prix d un certain nombre de stocks différents, échantillonnées sur les mêmes jours. Quand vous lisez des données depuis une source externe, elles seront généralement stockées dans un data frame. En particulier, read.csv () vous permet de lire des données à partir d un fichier contenant des valeurs séparées par des virgules. On peut créer un data frame en utilisant la commande data.frame. Par exemple, l instruction fr <- data.frame(age = c(15,20), nom = c("pierre", "jean"), row.names = c("i1", "I2")) crée un data frame (une liste) dont les nom de colonnes sont age et nom, et les noms de lignes sont I1, I2 (préciser le nom des lignes est optionnel). On peut référencer les colonne d un data frame par le nom de la colonne ou par son numéro : fr[, 1] donne 15 20, fr[, "age"] donne 15 20 et fr$age donne 15 20. Si toutes les données dans le data frame sont du même type, on peut le convertir en une matrice en utilisant as.matrix(). 2.9 Les valeurs manquantes et NaNs Comme dans d autres langages de programmation, le résultat d une opération sur des nombres peut retourner NaN, symbole de Not a Number (pas une valeur numérique). Par exemple, un programme peut demander une opération indéfinie, comme une division par zéro, etc. R a aussi un autre type de non-nombre, NA pour non applicable. NA est utilisée pour indiquer des données manquantes, et est malheureusement assez courante dans les ensembles de mesures. NA dans R est similaire à NULL dans SQL ou types nullable en C#. Cependant, il faut être très prudent avec les valeurs NA dans R. Le concepteur de base de données ou l auteur d un code C# spécifie quelles valeurs sont nullable et peut éviter le problème en interdisant telles valeurs. L auteur d une fonction de R, cependant, n a aucun contrôle sur les données que ses fonctions recevront, parce que NA est une valeur autorisée à l intérieur d un vecteur R. Il n y a aucun moyen de spécifier qu une fonction ne prend que les vecteurs avec des éléments non-nuls. Vous devez gérer les valeurs NA, au moins en renvoyant une erreur. La fonction is.nan retourne TRUE pour les composantes de son argument égales à NaN. La fonction is.na retourne TRUE pour les composantes qui sont NA ou NaN. 2.10 Fonctions La syntaxe de définition de fonction de R est similaire à celle du langage JavaScript. Par exemple : f <- function (a, b) { 6

} return (a + b) La fonction function retourne une fonction, qui est généralement affectée à une variable, f dans ce cas, mais ce n est pas nécessaire. Vous pouvez utiliser function pour créer une fonction anonyme (λ-expression). Notez que return est une fonction, son argument doit être contenue entre parenthèses, contrairement à C où parenthèses sont facultatives. L utilisation de return est facultative, sinon la valeur de la dernière ligne exécutée dans une fonction est sa valeur de retour. Les valeurs par défaut sont définis de manière analogue à C++. Dans l exemple suivant, b est fixé à 10 par défaut. f <- function (a, b = 10) { return (a + b) } Ainsi f(5, 1) retourne 6 et f(5) retourne 15. R permet des valeurs par défaut plus sophistiqués ; une valeur par défaut dans R peut ne pas être un type statique, mais pourrait, par exemple, être une fonction d autres arguments. C++ exige que si un argument a une valeur par défaut, ainsi toutes les valeurs par défaut doivent être définies pour les arguments suivants. Ce n est pas le cas dans R, mais c est toujours une bonne idée. La définition f <- function (a = 10, b) { return (a + b) } est légal, mais f(5) produira une erreur dans ce cas 5 serait affecté à l argument a, mais aucune valeur serait affectés à b. La raison pour laquelle une telle définition de la fonction n est pas illégal, c est que l on peut appeler la fonction avec un nom de l argument, par exemple, f(b = 2) retournerait 12. Les arguments de fonction sont passés par valeur. Le mécanisme le plus commun pour le passage des variables par référence consiste à utiliser des variables non-locales (pas nécessairement variables globales, mais des variables dans la portée (scope) de l appelant). Une alternative plus sûre est de passer explicitement toutes les valeurs nécessaires et de retourner une liste en sortie. 2.11 Portée de variables R utilise la portée (scoping) lexicale alors qu on est plus habitués à la portée statique, la différence peut être subtile. Sachant que les variables ne peuvent pas être déclarée - ils existent à partir de la première affectation - il n est pas toujours facile de déterminer la portée d une variable. Vous ne pouvez pas dire juste en regardant le code source d une fonction si une variable est locale à cette fonction. 7

2.12 Les principales fonctions génériques Il s agit de fonctions qui s appliquent à tous les types d objets, mais qui exécutent une commande spécifique en fonction de la classe de l objet concerné. Les trois principales fonctions génériques sont : print qui optimise l affichage écran de différents objets, plot qui réalise des representation graphiques, summary qui renvoie un résumé sur le contenu d un objet. En pratique, les fonctions réellement exécutées sont différentes pour différentes classes d objets. Ainsi, en tapant print(x), on fait appel à la fonction print.default si x est un vecteur, à la fonction print.ts si x est une s erie chronologique, à la fonction print.glm si x est le résultat de la mise en oeuvre d un modèle linéaire généralisé, etc. 2.13 Divers Voici quelques faits divers de R qui peuvent être utiles. pour utiliser l arithmétique complexe, ajoutez 0i à un nombre donné. Par exemple, sqrt(-1) retourne NaN, mais sqrt(-1 + 0i) retourne 0 + 1i sessioninfo() imprime la version de R, OS, des packages chargés, etc ls() montre les objets qui sont définis rm(list=ls()) efface tous les objets définis dev.new() ouvre une nouvelle fenêtre graphique sans écraser la précédente la fonction sort() ne modifie pas son argument préfixes de fonctions de distribution d, p, q, r correspondent à la densité (PDF), la probabilité (CDF), quantile (CDF inversée), et génération d un échantillon aléatoire. Par exemple, dnorm est la fonction de densité d une variable aléatoire normale et rnorm génère un échantillon normale. Les fonctions correspondantes pour une variable aléatoire uniforme sont dunif et runif. 8