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

Documents pareils
Ricco Rakotomalala R.R. Université Lyon 2

Introduction à MATLAB R

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

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

Les concepts de base, l organisation des données

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Utilisation d objets : String et ArrayList

Gestion des données avec R

STAGE IREM 0- Premiers pas en Python

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

Chap III : Les tableaux

Programmer en JAVA. par Tama

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

TP 1. Prise en main du langage Python

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

Présentation du langage et premières fonctions

Conventions d écriture et outils de mise au point

Architecture des Systèmes d Information Architecture des Systèmes d Information

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

Programmation linéaire

Définitions. Numéro à préciser. (Durée : )

Surveillance et maintenance prédictive : évaluation de la latence de fautes. Zineb SIMEU-ABAZI Univ. Joseph Fourier, LAG)

Cours Informatique Master STEP

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

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

Algorithme des fourmis appliqué à la détection et au suivi de contours dans une image

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

Notions fondamentales du langage C# Version 1.0

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

INTRODUCTION AU LOGICIEL R

Cours Bases de données 2ème année IUT

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

Initiation au logiciel R

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

Initiation à LabView : Les exemples d applications :

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

Plan du cours Cours théoriques. 29 septembre 2014

Introduction à la programmation en R. Vincent Goulet

Création et Gestion des tables

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

1 Description générale de VISFIELD

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

Le Langage SQL version Oracle

SOMMAIRE. Travailler avec les requêtes... 3

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

Excel Avancé. Plan. Outils de résolution. Interactivité dans les feuilles. Outils de simulation. La valeur cible Le solveur

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

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

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Le langage C. Séance n 4

Business Intelligence avec Excel, Power BI et Office 365

Premiers Pas en Programmation Objet : les Classes et les Objets

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

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

TP, première séquence d exercices.

Correction TD algorithmique

Analyse de sécurité de logiciels système par typage statique

Business Intelligence

Programmation en Java IUT GEII (MC-II1) 1

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

as Architecture des Systèmes d Information

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Les structures de données. Rajae El Ouazzani

Suites numériques 3. 1 Convergence et limite d une suite

Excel avancé. Frédéric Gava (MCF)

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

Le langage SQL Rappels

Raisonnement par récurrence Suites numériques

Whitepaper. Méthodologie de création de rapports personnalisés SQL Server Reporting Services

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

LES DECIMALES DE π BERNARD EGGER

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)

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

Renommer un contrôleur de Domaine Active Directory Sous Windows Server 2008 R2

Préparez la rentrée!

Traduction des Langages : Le Compilateur Micro Java

2. Comprendre les définitions de classes

PROBABILITES ET STATISTIQUE I&II

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

R01 Import de données

Approche Contract First

Cours de Probabilités et de Statistique

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

Le Langage De Description De Données(LDD)

R, Bonnes pratiques. Christophe Genolini

Package TestsFaciles

Sciences de Gestion Spécialité : SYSTÈMES D INFORMATION DE GESTION

TP : Gestion d une image au format PGM

Lire ; Compter ; Tester... avec R

Principes des langages de programmation INF 321. Eric Goubault

NOS FORMATIONS EN BUREAUTIQUE

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

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

Probabilités III Introduction à l évaluation d options

Transcription:

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

Saisie, l opérateur c(), accès aux valeurs CRÉATION ET OPÉRATIONS SUR LES VECTEURS 2

Création via une saisie Vecteur C est l objet de base dans R On peut y mettre des numeric, logical, character Pour en connaître le type, on utilise class() Création via une saisie console Utilisation de la commande scan() Tant que saisie de valeurs, la taille du vecteur s accroit Arrêt dès que l utilisateur fait ENTREE 2 fois consécutivement Création via la commande c() directement dans le code prog. v <- c(1.2,2.5,3.2,1.8) #crée un vecteur de réels de taille 4 length(v) #renvoie le nombre d éléments C est l approche que tout le monde adopte pour la saisie de valeurs, ça ne pose pas de soucis parce R est un langage interprété. De fait, nous allons utiliser un autre éditeur de code (soit celui de R, soit des outils tels que R-Studio, soit Eclipse avec StatET ). 3

Création à partir d une séquence #une suite arithmétique de raison 1 v <- 1 : 4 # v contient les valeurs (1, 2, 3, 4) class(v) # renvoie numeric #utilisation de la commande seq() v <- seq(from=1,to=2,by=0.2) # v contient (1.0,1.2,1.4,1.6,1.8,2.0) #on peut utiliser rep() également v <- rep(1:2,times=2,each=2) # (1,1,2,2,1,1,2,2) #vecteur de valeurs logiques b <- c(t,t,f,t) # crée un vecteur de taille 4 contenant des logical class(b) #renvoie logical 4

Opérations sur les vecteurs : les principes «elementwise» et «replication» «elementwise» Les opérations s effectuent élément par élément v1 c(1.2,1.3,1.0) v2 c(2.1,0.8,1.3) z v1 * v2 #renvoie (2.52,1.04,1.30) «replication» Si les vecteurs sont de taille différentes, R utilise le principe de la réplication c.-à-d. il ajuste la taille du vecteur court en dupliquant les valeurs v1 c(2,4,5,3,1) v2 c(1,4,8) z v1 * v2 #renvoie (2,16,40,3, 4) v2 a été rallongé en interne en c(1,4,8,1,4) 5

«Réplication» (suite) et Opération sur les vecteurs de booléens «replication» pour les scalaires Un scalaire est un vecteur de taille 1. Utilisé dans une opération, il est dupliqué autant de fois que nécessaire v2 <- c(1,4,8) z <- v2 +1 #renvoie (2,5,9) #parce que 1 a été répliqué en (1,1,1) Opérations sur les vecteurs de booléens Les opérateurs ET et OU s appliquent aux vecteurs de booléens, mais ils s écrivent différemment : & et (une seule fois) b1 c(t,f,t,t) b2 c(f,f,t,f) b b1 & b2 #renvoie (F, F, T, F) En revanche b b1 && b2 #renvoie FALSE R n utilise que la 1 ère valeur dans les 2 vecteurs 6

Opérateurs récapitulatifs sur les vecteurs Opérateurs pouvant s appliquer sur des vecteurs Ils sont nombreux et très performants. Ex. sum(), length(), mean(), max(), etc. Editeur de code R Sortie console 7

Un outil merveilleux : la fonction «replicate» replicate permet de lancer n fois une expression ou une fonction, typiquement une simulation, et collecter les résultats dans une structure appropriée (ex. une simulation = une valeur les résultats sont collectés dans un vecteur). Ex. Simulation de lancer de dés à «m» faces #fonction paramétré par m #un dé, par défaut c est m = 6 faces lance.un.de <- function(m=6){ #runif génère 1 valeur selon U(0,1) #trunc prend la partie entière return(1+trunc(m*runif(1))) } #lancer 1000 fois un dé à 4 faces (!) res <- replicate(1000,lance.un.de(m=4)) print(length(res)) #nb. apparition chaque face print(table(res)) L outil est vraiment très souple. Pas besoin d utiliser une boucle! 8

Accès indexé On peut accéder aux valeurs à l aide d un indice (entier) Le 1 er indice est 1 Le dernier correspond à length() v <- c(1.5,0.2,0.9,2.8,3.5,9.5,1.4) v[3] # affiche 0.9 a <- v[1] # affecte à a la valeur 1.5 v[4] <- 2 * v[3] #remplace 2.8 par 1.8 9

Allocation dynamique d un vecteur On peut avoir besoin d un vecteur sans en connaître la taille à l avance. 2 étapes : (1) création de l objet vide ; (2) l insertion à une case inexistante allonge automatiquement le vecteur. Note : une case non affectée contient alors la valeur NA. w <- double(0) #prépare le pointeur et effectue le typage w[3] <- 1.2 print(w) #affiche (NA, NA, 1.2), la taille du vecteur est ajustée!!! Autres initialisations : w <- NULL # pointeur nul w <- c() #idem, pointeur nul Le typage se fait alors lors de la 1 ère affectation 10

Concaténation de 2 vecteurs L opérateur c() permet de concaténer 2 ou plusieurs vecteurs x <- c(1.2,3.3) y <- c(1.3,4.2,1.8) z <- c(x,y) #renvoie (1.2, 3.3, 1.3, 4.2, 1.8) 11

Extraire un sous-ensemble de valeurs d un vecteur EXTRACTIONS 12

Utilisation d une plage d indices L accès indicé vu précédemment est un cas particulier On peut utiliser une plage d indices pour extraire un sous-vecteur v <- c(1.2, 2.3, 4.2, 8.5, 6.3) Indices contigus v[2:4] # (2.3, 4.2, 8.5) m <- 1:3 #m représente un vecteur d indices (1,2,3) v[m] # (1.2,2.3,4.2) Indices non-contigus v[c(1:3,5)] # (1.2,2.3, 4.2, 6.3) Indices négatifs v[-2] # (1.2,4.2,8.5, 6.3), tous sauf la 2 ème valeur v[-(2:4)] #(1.2,6.3), ne conserve que la 1 ère et la 5 ème On peut affecter les valeurs extraites à un autre vecteur x <- v[c(1,4:5)] print(x) # (1.2, 8.5, 6.3) 13

Extraction : utilisation d un vecteur de booléens On peut utiliser un vecteur de booléens pour l extraction v <- c(1.2, 2.3, 4.2, 8.5, 6.3) Vecteur de b <- c(t,t,f,f,t) booléens v[b] #(1.2, 2.3, 6.3) Tailles non conformes des vecteurs b <- c(t,f) v[b] #(1.2, 4.2, 6.3) car b est répliqué en (T,F,T,F,T) d <- c(t,f,f,f,t,t) #d est trop long v[d] #(1.2, 6.3,NA) : NA pour les cases manquantes Une condition correspond à un vecteur de booléens z <- c(0.1, 1.5, 3.6, 1.1, 3.2) v[(z > 2)] #(4.2,6.3), parce que (z > 2) (F,F,T,F,T) v[(z <1 z >3.5)] #(1.2,4.2), parce que (T,F,T,F,F) 14

Accès par nom Il est possible d attribuer des noms aux cases du vecteur avec l instruction names() v <- c(1.2, 2.3, 4.2, 8.5, 6.3) names(v) <- c(«thierry», «david», «louis», «nicolas», «franck») x <- v[«david»] print(x) #x vaut 2.3 #on peut également procéder à une affectation par nom v[«thierry»] <- 10 print(v) # donne (10.0, 2.3, 4.2, 8.5, 6.3) 15

Le type FACTOR pour la représentation des variables qualitatives Un factor est un vecteur d entiers : (1) chaque valeur correspond à un code de modalité ; (2) on peut attribuer des noms aux modalités v c(1, 2, 1, 1, 2) # 1 signifie «masculin» et 2 «féminin». Comment indiquer cela à R? sexe factor(v) #sexe est un type FACTOR, 1 et 2 deviennent des codes print(sexe) # renvoie (1, 2, 1, 1, 2) et levels : 1, 2 print(is.factor(sexe)) # renvoie TRUE, confirme que sexe est bien un factor levels(sexe) # renvoie («1», «2») un vecteur de chaînes de carac. levels(sexe) <- c(«masc», «fem») #renommer les niveaux de manière explicite # R sait maintenant que 1 c est «masculin», 2 c est «féminin» print(sexe) # renvoie (masc,fem,masc,masc,fem) et levels : masc, fem #pour connaître le nombre de modalités print(nlevels(sexe)) # renvoie 2 #accès aux modalités. Ex. 1 ère modalité print(levels(sexe)[1]) #renvoie «masc» On peut revenir aux codes x <- unclass(sexe) print(x) # renvoie (1, 2, 1, 1, 2), vecteur d entiers 16

Calculs récapitulatifs conditionnels avec tapply tapply() permet de réaliser des calculs sur un vecteur, conditionnellement aux valeurs prises par un ou plusieurs facteurs #un vecteur de 6 valeurs v <- c(1.2,2.3,4.1,2.5,1.4,2.7) #un factor = genre des individus x <- factor(c(1,2,1,1,2,1)) levels(x) <- c("masculin","feminin") #moyenne de v conditionnellement à x print(tapply(v,x,mean)) 17

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 18