Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_r.html. R.R. Université Lyon 2



Documents pareils
Introduction à MATLAB R

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Ricco Rakotomalala R.R. Université Lyon 2

Programmer en JAVA. par Tama

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


Plan du cours. Historique du langage Nouveautés de Java 7

Cours Informatique Master STEP

Conventions d écriture et outils de mise au point

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

TP 1. Prise en main du langage Python

as Architecture des Systèmes d Information

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Utilisation d objets : String et ArrayList

Algorithmique et Programmation, IMA

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Programmation Web. Madalina Croitoru IUT Montpellier

Algorithmique et programmation : les bases (VBA) Corrigé

Présentation du langage et premières fonctions

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

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Java Licence Professionnelle CISII,

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

R, Bonnes pratiques. Christophe Genolini

Les structures de données. Rajae El Ouazzani

Notions fondamentales du langage C# Version 1.0

Introduction au langage C

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Langage Java. Classe de première SI

UE Programmation Impérative Licence 2ème Année

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

1. Structure d'un programme FORTRAN 95

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

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

SUPPORT DE COURS. Langage C

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

OCL - Object Constraint Language

Solutions du chapitre 4

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

STAGE IREM 0- Premiers pas en Python

1 Recherche en table par balayage

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

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

Plan du cours Cours théoriques. 29 septembre 2014

Les concepts de base, l organisation des données

La technologie Java Card TM

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Initiation à la programmation en Python

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Les chaînes de caractères

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

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

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

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

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Corrigé des TD 1 à 5

Rappels sur les suites - Algorithme

Représentation d un entier en base b

Cours d algorithmique pour la classe de 2nde

Enseignement secondaire technique

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

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

L informatique en BCPST

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Langage Éric Guérin 5 octobre 2010

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

Présentation du PL/SQL

Chapitre 2 Devine mon nombre!

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Génie Logiciel avec Ada. 4 février 2013

Premiers Pas en Programmation Objet : les Classes et les Objets

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Claude Delannoy. 3 e édition C++

PROGRAMMER EN MQL4. Apprenez à automatiser vos stratégies sur MetaTrader 4

données en connaissance et en actions?

1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2

TP, première séquence d exercices.

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Cours 14 Les fichiers

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

TP1 - Prise en main de l environnement Unix.

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

Cours d Algorithmique et de Langage C v 3.0

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

2 Comment fonctionne un ordinateur, dans les grandes lignes

UE C avancé cours 1: introduction et révisions

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Cours 1 : La compilation

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Initiation à la Programmation en Logique avec SISCtus Prolog

Éléments de programmation et introduction à Java

Transcription:

Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_r.html 1

Mode de fonctionnement sous R TRAVAILLER SOUS R 2

R est un interpréteur, il permet de programmer avec le langage S (on peut parler aussi de langage R). L objet de base est un vecteur de données. C est un «vrai» langage c.-à-d. types de données, branchements conditionnels, boucles, organisation du code en procédures et fonctions, découpage en modules. Mode de d exécution : transmettre à R le fichier script «.r» C est le mode que nous exploiterons dans ce didacticiel R est un logiciel de statistique et de data mining, pilotée en ligne de commande. Il est extensible (quasiment) à l infini via le système des packages. Les instructions servent à manipuler les objets R c.-à-d. les ensembles de données, les vecteurs, les modèles, etc. Nombreuses fonctions graphiques disponibles. Mode de d exécution : introduire commandes dans le terminal, manipulation interactive 3

Mode compilé vs. mode interprété Langage interprété : + portabilité application ; - lenteur (R, VBA, ) Langage compilé : + rapidité ; - pas portable (solution possible : write once, compile anywhere ; ex. Lazarus) Langage pseudo-compilé : + portabilité plate-forme ; - lenteur (?) (principe : write once, run anywhere ; ex. Java) R est interprété, certes mais les fonctions de bases (eigen, svd, etc.) et certaines fonctions stat sont compilées Bref, il n y a que les boucles qui posent réellement problème 4

R propose les outils standards de la programmation (1/2) Données typées. Dans R, le type de base est le vecteur. Il est possible de définir des tableaux et des matrices. Mais en interne R les linéarise sous forme de vecteurs, même si pour nous, c est (souvent) transparent. Structures avancées de données. Cela peut être des résultats de calculs i.e. les modèles ; des ensembles de vecteur (les data.frame) ; etc. pour gérer ce type de données, R s appuie sur le mécanisme des listes. Séquences d instructions, c est la base même de la programmation, pouvoir écrire et exécuter une série de commandes sans avoir à intervenir entre les instructions. Structures algorithmiques : les branchements conditionnels et les boucles. 5

R propose les outils standards de la programmation (2/2) Les outils de la programmation structurée : pouvoir regrouper du code dans des procédures et des fonctions. Cela permet de mieux organiser les applications. Organisation du code en modules. Fichiers «.r» que l on peut appeler dans d autres programmes. Possibilité de distribution des modules : soit directement les fichiers «.r», soit sous forme de «package». R est «case sensitive», il différencie les termes écrits en minuscule et majuscule. On a intérêt à écrire systématiquement le code en minuscule pour éviter les confusions. 6

Notre utilisation de R (dans un premier temps) Ecriture du code dans un éditeur de code (notepad++) Exécution du programme sous R 7

Premières opérations sous R LES BASES DU LANGAGE R 8

Premières opérations Affectation a <- 1.2 a est une variable, en interne c est un vecteur de taille 1, et il peut contenir des données numériques le typage est donc automatique. Dans la terminologie R, a est un «objet». Lister le contenu de la mémoire ls() Affiche tous les objets situés dans la mémoire de l environnement R. Supprimer un objet rm(a) où a représente le nom de l objet à supprimer. Supprimer tous les objets en mémoire rm(list=ls()) On liste le nom de tous les objets en mémoire et on les efface. Attention, on supprime autant les données (vecteurs, matrices) que les modèles (ex. résultats de régression, etc.) Accès à l aide d une fonction help(lm) Par ex. envoie l aide pour la fonction «lm» qui sert à produire une régression linéaire multiple. Recherche par mot dans le fichier d aide help.search(«lm») Recherche la chaîne de caractères «lm» dans le fichier d aide. 9

Types élémentaires de R Données, types : le type de base est le vecteur scalaire = vecteur de taille 1 numeric qui peut être integer (entier) ou double (double). Les opérateurs applicables sont : +, -, *, /, ^, %% (modulo), %/% (division entière) ex. 5 / 2 2.5 (division entre valeurs réelles) ; en revanche 5 %/% 2 2 (division entière) logical correspond au type booléen, il prend deux valeurs possibles TRUE et FALSE (en majuscule) que l on peut abréger avec T et F. Les opérateurs sont! (négation), && (ET logique), (OU logique), xor() (OU exclusif) ex.!t F ; xor(t,f) T ; T && F F ; etc. character désigner les chaînes de caractères. Une constante chaîne de caractère doit être délimitée par des guillemets ex. a «toto» affecte la valeur «toto» à l objet a qui devient donc une variable de type chaîne de caractères (fonctions de manipulation : paste(..), grep(..), etc.) Remarque : pour connaître la classe d un objet i.e. le type associé à un objet, on utilise la fonction class(nom_objet) ex. class(1.2) renvoie la valeur numeric 10

Instanciation et affectation Explicitement La première instruction est très rarement utilisée #réserver la variable a <- logical(1) #affectation a <- TRUE #affichage du type print(class(a)) Implicitement Affectation directe, R «devine» le type le plus approprié #affectation a <- TRUE #affichage du type print(class(a)) 11

Enchaînement des instructions La plus couramment utilisée a 1 b 5 d a + b Autres possibilités Personne n utilise ces écritures a 1;b 5 ;d a + b; a 1; b 5; d a + b; 12

Saisie et affichage Saisie a scan() b scan() d a + b (1) R est interprété, on peut modifier le code source et relancer. (2) Utiliser la fonction scan() qui permet d effectuer une saisie console lors de l exécution du programme. C est l approche que nous privilégierons dans un premier temps. Affichage d a + b #Affichage implicite d #Affichage explicite print(d) N.B. L affichage implicite ne marche pas dans les procédures et fonctions L affichage explicite marche toujours! 13

Transtypage Principe Utilisation du mot-clé «as» > as.nom_nouveau_type(objet) Conversion en numérique a «12» # a est de type caractère b as.numeric(a) #b est de type numeric N.B. Si la conversion n est pas possible ex. a as.numeric(«toto»), R renvoie une erreur (plus précisément une donnée manquante, à voir plus loin ) Conversion en logique a as.logical(«true») # a est de type logical est contient la valeur TRUE Conversion en chaîne de caractères a as.character(15) # a est de type chaîne et contient «15» A voir plus tard : as.matrix( ) ; as.data.frame( ) ; etc. 14

Opérateurs de comparaison Les opérateurs de comparaison servent à comparer des valeurs de même type et renvoient une valeur de type booléen. Sous R, ces opérateurs sont <, <=, >, >=,!=, == ex. a (12 == 13) # a est de type logical, il a la valeur FALSE N.B. On utilisera principalement ces opérateurs dans les branchements conditionnels. 15

Quelques valeurs particulières La valeur infinie Inf (ou Inf pour l infini) a 1/0 # a prend la valeur Inf t is.infinite(a) # t est un logical avec la valeur TRUE b 1/Inf #affecte la valeur 0 à b! La valeur indéfinie NaN (qui veut dire «not a number») a 0/0 # envoie la valeur NaN dans a b b + a # b prend aussi la valeur NaN is.nan(b) # renvoie TRUE Donnée manquante NA (not available), très utile en statistique a 10 + NA # affecte à a la valeur NA b a + 5 #b prend aussi la valeur NA is.na(b) #renvoie TRUE Pointeur NULL (très utile pour la manipulation des listes). a NULL #a pointe sur un espace non alloué is.null(a) #renvoie TRUE 16

R est un vrai langage de programmation STRUCTURES ALGORITHMIQUES 17

Branchement conditionnel «if» Condition est très souvent une opération de comparaison if (condition){ instruction(s) } else { instruction(s) } (1) Attention aux accolades : else doit être sur la même ligne que } (je n ai jamais su pourquoi) (2) La partie else est facultative 18

Branchement conditionnel «if» (exemple) #demander le prix ht print("saisir prix ht") ht <- scan() #type de produit print("type de produit : 1 - luxe, autre - normal") typprod <- scan() #calcul du prix ttc if (typprod == 1) { tva <- 0.33 } else { tva <- 0.196 } #calcul ttc <- ht * (1 + tva) #affichage print(paste("prix ttc = ",as.character(ttc))) 19

Le cas particulier de «ifelse» - Qui se comporte comme la fonction SI() d Excel On peut simplifier la structure de branchement, surtout quand il s agit d effectuer une simple affectation Il fonctionne de 2 manières différentes : (1) il renvoie un valeur selon que la condition est vraie ou pas tva ifelse(typprod == 1, 0.33, 0.196) (2) on procède à une opération simple suivie d une affectation dans les deuxièmes et troisièmes paramètres de la fonction ifelse(typprod == 1, ttc ht * 1.33, ttc ht * 1.196) On peut même mettre un bloc d instructions délimité par { et } 20

Branchement multiple «switch» switch(n,action si n = 1, action si n = 2,etc.) Mais : n doit prendre les valeurs 1, 2, 3,. pas de else action est limitée à une seule instruction, sauf à ruser en mettant un bloc entre { et } On le voit très rarement dans les programmes! 21

Avant la boucle «for» : génération d une séquence de valeurs Suite arithmétique simple (séquence de valeurs entières) #génération d une suite 1 2 10 1:10 # on peut stocker dans une variable #suite paramétrable a 3 b 6 a:b #va générer 3 4 5 6 Séquences de valeurs réelles, avec un pas réel #génération d une suite #1 1.5 2 2.5 5 (20 valeurs) seq(from = 1, to = 5, by = 0.5) Remarque : to et by peuvent ne pas correspondre, dans ce cas la séquence s arrête à la dernière valeur précédent to ex. seq(from=1, to=2, step=0.3) 1 1.3 1.6 1.9 22

Avant la boucle «for» : génération d une séquence de valeurs (suite) Répétition d une séquence de valeurs rep(séquence,times = nombre de fois,each = répétition de chaque élément) Exemples (1)rep(1 :4,times=2) 1 2 3 4 1 2 3 4 (2)rep(1 :4,each=2) 1 1 2 2 3 3 4 4 (3)rep(1 :4,times=2,each=2) 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 23

Boucle «for» Séquence peut être stockée dans un vecteur Le pas peut ne pas être régulier La séquence n est même pas forcément monotone! Bref, l outil est très (trop) souple d où sa lenteur for (indice in séquence){ } instruction(s) Remarque : On peur «casser» la boucle avec break 24

Boucle «for» (exemple) #A faire : somme S = SUM_i i^2 #saisie de n n <- scan() #initialisation de la somme s <- 0.0 #boucle for for (i in 1:n){ s <- s + i^2 } #affichage des résultats print("la somme = ") print(s) 25

Boucle «while» Opération de comparaison Attention à la boucle infinie! while (condition){ } instruction(s) 26

Boucle «while» (exemple) #A faire : somme S = SUM_i i^2 #saisie de n n <- scan() #initialisation de la somme et de l indice s <- 0.0 i <- 1 #boucle «tant que» while (i < n){ s <- s + i^2 i <- i + 1 } #affichage des résultats print("la somme = ") print(s) 27

Conclusion - R est magique De la documentation à profusion (n achetez jamais des livres sur R) Site du cours http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_r.html Programmation R http://www.duclert.org/ Quick-R http://www.statmethods.net/ POLLS (Kdnuggets) Data Mining / Analytics Tools Used (R, 2 nd ou 1 er depuis 2010) What languages you used for data mining / data analysis? http://www.kdnuggets.com/polls/2013/languages-analytics-data-mining-data-science.html (Août 2013, langage R en 1 ère position) Article New York Times (Janvier 2009) Data Analysts Captivated by R s Power - http://www.nytimes.com/2009/01/07/technology/businesscomputing/07program.html?_r=1 28