[PDF] [PDF] Construire un Package

programmes Pour créer un package, il vous faut installer sur votre ordinateur un certain nombre Copier tous les dossiers du répertoire C:/Program Files/R/R- 2 2 1/ Programmation en R: incorporation de code C et création de packages,



Previous PDF Next PDF





[PDF] Introduction à la programmation en R - The Comprehensive R

cuter le code informatique se trouvant dans les sections d'exemples à la fin de chacun À l'origine fut le S, un langage pour « programmer avec des données » En 2008, Lucent Technologies a vendu le langage S à Insightful Corporation,



[PDF] Construire un Package

programmes Pour créer un package, il vous faut installer sur votre ordinateur un certain nombre Copier tous les dossiers du répertoire C:/Program Files/R/R- 2 2 1/ Programmation en R: incorporation de code C et création de packages,



[PDF] Programmation en langage C - Centre Inria de Paris

1 7 12 R`egles de priorité des opérateurs programme C est décrit par un fichier texte, appelé fichier source La mémoire de l'ordinateur se décompose en une suite continue d'octets l'incorporation de fichiers source (#include),



[PDF] Langage C - LAMSADE - Université Paris Dauphine

IUP GéniE MAtHéMAtiqUE Et InForMAtiqUE inc lu de < stdio h > Exercice 27 Ecrire une f onction int coder ( int iD ep la ce m ent , c ha r * sN o mF ic h ier 1  



[PDF] Apprendre à programmer sous R en utilisant le Notebook Jupyter

Applied Statistics And Modelling Group, Département d'Informatique, Faculté des 4 1 Implémentation du cours Introduction à R dans le Notebook Jupyter 25 4 2 Leçon des commandes en lignes de code dans un langage de programmation relativement simple R est un Springer- Verlag New York, Inc , 2002



[PDF] Programmation en C – Exercices - Pages Perso - UPVD

Coder, compiler et exécuter le programme présenté en cours 2 utiliser seulement un pointeur r qui pointe vers p pour modifier la valeur entière v “à partir du clavier” (main-inc) Ecrire une fonction incremente qui incrémente une variable entière passée Cet enseignement comprend des séances de TD sur ordinateur



[PDF] 4 Initiation à lassembleur

que vous faites, sous peine de faire se planter l'ordinateur Il existe plusieurs logiciels pour programmer un PC en C/C++ et en assembleur Les plus On utilise donc QEditor pour créer un code source en assembleur Ensuite, on doit inc i test: cmp i,10 jl next endfor: Implantation d'un switch : switch (i) { switch:



[PDF] analyse-R - GitHub Pages

9 fév 2021 · analyse-R est développé avec RStudio et le code source est librement disponible sur GitHub : R fonctionne à l'aide de scripts (des petits programmes) édités et exécutés Dans le cas particulier où votre ordinateur est situé derrière un proxy, il est préférable de choisir Options de American Airlines Inc



[PDF] Travaux Pratiques de Microcontrôleur

correspondant à chaque tâche que vous aurez à programmer sur le simulateur ou Copier dans ce dernier répertoire les fichiers P18F4520 inc et CONFIG inc Figure 6: MPLAB IDE, Code hexadécimal du programme Écrire le programme sur ordinateur avec MPLAB, simuler son fonctionnement et le valider sur la carte

[PDF] Incorporation de fibres rapidement fermentescibles

[PDF] Incorporation de fines de béton de démolition dans la fabrication de

[PDF] incorporations gardien de la paix

[PDF] IncoStress Instructions For Use Mode d`emploi IncoStress® - Anciens Et Réunions

[PDF] Incoterms - Bluesped - L'Achat Et La Vente De Maisons

[PDF] Incoterms - Termes de vente a l`international - Fret Aérien

[PDF] incoterms 2000 - L'Achat Et La Vente De Maisons

[PDF] Incoterms 2000 A

[PDF] incoterms 2010 - Anciens Et Réunions

[PDF] Incoterms 2010 et assurance transport

[PDF] Incoterms. Logistique et transport

[PDF] incoterms™ 2010 - can - L'Achat Et La Vente De Maisons

[PDF] Increased serotonin concentrations in cerebrospinal fluid of suicide - France

[PDF] Increasing Your Awareness to Fraud

[PDF] Incredible Machine - Frederic Vernier Home Page - Gestion De Projet

Construire un Package

Classic et S4

Christophe Genolini

2

Table des matieres

1 Creation d'un package classique 5

1.1 Conguration de votre ordinateur . . . . . . . . . . . . . . . . . . . . . . .

5

1.1.1 Installation de programmes . . . . . . . . . . . . . . . . . . . . . .

5

1.1.2 Modication duPATH. . . . . . . . . . . . . . . . . . . . . . . . .6

1.1.3 RepertoireTMPDIR. . . . . . . . . . . . . . . . . . . . . . . . . . .6

1.1.4 Ajustements pour MiKTeX . . . . . . . . . . . . . . . . . . . . . .

6

1.2 Creation d'un programme... qui fonctionne! . . . . . . . . . . . . . . . . .

7

1.2.1 Quelques regles . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

1.2.2 Les tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

1.2.3 Le programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

1.3 Creation de l'arborescence et des chiers . . . . . . . . . . . . . . . . . . .

12

1.3.1package.skeleton. . . . . . . . . . . . . . . . . . . . . . . . . . .12

1.3.2 Creation des aides pour les donnees . . . . . . . . . . . . . . . . .

14

1.3.3 DESCRIPTION . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

1.4 Visibilite des fonctions :NAMESPACE. . . . . . . . . . . . . . . . . . . . . .16

1.4.1export. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16

1.4.2import. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18

1.4.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

1.5 Preparation de la documentation . . . . . . . . . . . . . . . . . . . . . . .

18

1.5.1 C'est long, c'est fastidieux, ca n'est pas le moment... . . . . . . . .

19

1.5.2 Que faut-il documenter? . . . . . . . . . . . . . . . . . . . . . . . .

20

1.5.3 Les alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20

1.5.4 L'alias modies . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

1.5.5 Les alias multiples . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

1.5.6 Les extra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

1.5.7\alias{nomDuPackage}. . . . . . . . . . . . . . . . . . . . . . . .22

1.5.8 Internal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

1.5.9 Eacer les docs des prives . . . . . . . . . . . . . . . . . . . . . . .

22

1.5.10 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

1.6 Redaction des documentations . . . . . . . . . . . . . . . . . . . . . . . .

23

1.6.1 Syntaxe generale . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

1.6.2 Generalites pour toutes les documentations . . . . . . . . . . . . .

24

1.6.3 Presentation generale du package . . . . . . . . . . . . . . . . . . .

25
3

4TABLE DES MATIERES

1.6.4 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26

1.6.5 Donnees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

1.7 Finalisation et creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

1.7.1 Verication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

1.7.2 Construction (ou compilation) . . . . . . . . . . . . . . . . . . . .

28

1.7.3 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

29

1.7.4 upload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30

2 Creation d'un package en S4 31

2.1 Conguration de votre ordinateur . . . . . . . . . . . . . . . . . . . . . . .

31

2.2 Creation d'un programme... fonctionne! . . . . . . . . . . . . . . . . . . .

31

2.2.1 Quelques regles de plus . . . . . . . . . . . . . . . . . . . . . . . .

31

2.2.2 Les tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33

2.2.3 Toy exemple S4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33

2.3 Creation de l'arborescence et des chiers . . . . . . . . . . . . . . . . . . .

35

2.3.1package.skeleton. . . . . . . . . . . . . . . . . . . . . . . . . . .35

2.3.2 Aides pour les donnees . . . . . . . . . . . . . . . . . . . . . . . . .

36

2.3.3DESCRIPTION. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36

2.4 Visibilite des classes et des methodes (NAMESPACE) . . . . . . . . . . .

37

2.4.1export. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37

2.4.2import. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38

2.4.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

2.5 Preparation de la documentation . . . . . . . . . . . . . . . . . . . . . . .

38

2.5.1 Aide en S4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

2.5.2 Fichiers et alias creees par package.skeleton . . . . . . . . . . . . .

39

2.5.3 Intuitivement : de quoi a-t-on besoin? . . . . . . . . . . . . . . . .

41

2.5.4 Les alias en double . . . . . . . . . . . . . . . . . . . . . . . . . . .

42

2.5.5 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

2.6 Redaction des documentations . . . . . . . . . . . . . . . . . . . . . . . .

46

2.7 Finalisation et creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

46

A Remerciements 47

A.1 Nous vivons une epoque formidable . . . . . . . . . . . . . . . . . . . . . . 47
A.2 Ceux par qui ce tutorial existe... . . . . . . . . . . . . . . . . . . . . . . . 47

Bibliographie 49

Index50

Chapitre 1

Creation d'un package classique

1.1 Conguration de votre ordinateur

1

1.1.1 Installation de programmes

Pour creer un package, il vous faut installer sur votre ordinateur un certain nombre de logiciels (tous disponibles gratuitement sur le web), puis les congurer. {Perl: Perl est un langage optimise pour l'extraction d'informations de chiers textes et la generation de rapports. {Rtools: Les Rtools sont des outils Unix qui fournissent une couche d'emulation pour le systeme Windows. Ils rendent possible l'execution de programmes Unix sous Windows. {MinGW: MinGW permet de compiler du code C, C++ et FORTRAN. Si vous n'incluez pas de langage autre dans votre code, vous n'avez pas besoin deMinGW.

Sinon :

{HTML Help Workshop: Ce logiciel permet de produire des aides au format .chm, le format d'aide proprietaire de Windows. /hwmicrosofthtmlhelpdownloads.asp {Un compilateur LaTeX: LaTeX permet de produire une aide au format pdf. Plusieurs compilateurs sont disponibles, MiKTeX est assez stable. http://www.miktex.org/ {FTP: quand vous aurez termine votre package, il vous faudra le poster sur le site du CRAN. Cela se fait gr^ace a un logiciel gerant le FTP (File Transfert Protocol).

La encore, plusieurs choix sont possibles.1. Les sections 1.1 et 1.7 sont fortement inspirees (avec l'aimable autorisation de l'auteur) de l'ex-

cellent travail de Sophie Baillargeon. Pour des informations plus completes, nous vous recommandons chaudement de lire son tutorial [1] ou le diaporama qui l'accompagne [2]. 5

6CHAPITRE 1. CREATION D'UN PACKAGE CLASSIQUE

http://filezilla-project.org/

1.1.2 Modication duPATH

La creation d'un package se fait via une fen^etre de commandeDOSou une fen^etre terminal sousLinux. Tous les nouveaux programmes qui viennent d'^etre installes doivent ^etre accessibles depuis cette fen^etre. Pour cela, il faut preciser l'endroit ou ils ont ete installes sur votre ordinateur. Cela se fait en modiant la variablePATH. Le plus simple est de creer un chierRpath.batcontenant la denition de la variable PATH.A noter que les espaces ne sont pas acceptes dans les noms de chier. Sous Win- dows,Programme Filedoit donc ^etre abrege enProgra~1. La separation des dierents chemins peut se faire gr^ace a;. Pour plus de lisibilite, il est possible de denir lePATH sur plusieurs lignes :SET PATH=C:\Rtools\bin

SET PATH=%PATH%;

C :\Perl\bin

SET PATH=%PATH%;

C :\Rtools\MinGW\bin

SET PATH=%PATH%;

C :\PROGRA 1\ R R -2.9.1\bin

SET PATH=%PATH%;

C :\PROGRA 1\ R R -2.9.1\include

SET PATH=%PATH%;

C :\PROGRA

1\MIKTEX

1.6\miktex\bin

SET PATH=%PATH%;

C :\PROGRA

1\HTMLHE

1

SET PATH=%PATH%;

C :\WINDOWS

SET PATH=%PATH%;

C :\WINDOWS\system32 Si vous sauvegardezRpath.batdans le repertoire racineC:/, il vous sut ensuite de taperC:/Rpathdans la fen^etre systeme que vous venez d'ouvrir et votre variablePATH est modiee comme il convient. Nous reviendrons sur l'utilisation de ce chier dans la section sur la compilation nale 1.7. Il est egalement possible de modier la variablePATHen allant explorer les variables d'environnement. Mais ces modications sont permanentes (jusqu'a ce qu'elles soient rectiees). Cela veut dire qu'a chaque fois que vous allumerez votre ordinateur, lePATH sera modie m^eme si vous n'avez pas de package a compiler ce jour-la. Votre ordinateur sera un zeste moins rapide. Aussi, il est plus interessant de creer un chierRpath.bat que l'on executera les jours ou c'est necessaire.

1.1.3 RepertoireTMPDIR

La construction d'un package necessite l'existence d'un repertoire temporaire. Le plus simple est de creer le repertoireC:/temp. Il est egalement possible de modier la variable TMPDIR(voir [1] pour plus de detail sur cette option.)

1.1.4 Ajustements pour MiKTeX

Si on utilise MiKTeX comme compilateur LaTeX, il y a une derniere manipulation a eectuer pour le rendre compatible. Il faut :

1.2. CR

EATION D'UN PROGRAMME... QUI FONCTIONNE!7

Cr eeru nsou sr epertoirenom me/tex/dans le repertoireC:/localtexmf/ Cop iert ousle sd ossiersd ur epertoireC:/Program Files/R/R-2.2.1/ /share/texmf/dans le repertoireC:/localtexmf/tex/ P ours' assurerqu et outf onctionne,al lerd ans: Menu demarrer!Programmes !MiKTeX!MiKTeX Options!Generalet cliquer surRefresh NowetUpdate Now.

1.2 Creation d'un programme... qui fonctionne!

Votre ordinateur est pr^et, il faut maintenant verier que votre programme l'est aussi.

1.2.1 Quelques regles

V otrep rogrammed oitf onctionnerdan su nen vironnementvi erge,san sau cunp rea- lable. Ouvrez R (sans restauration d'une session precedente), lancez votre pro- gramme, il doit s'executer. V otrepr ogrammed oit^ etre\p ropre".En par ticulier,i ln edoi tcon tenirQUE l es variables et les fonctions que vous souhaitez voir apparaitre dans la version nale de votre package. Si vous avez utilise des fonctions auxiliaires ou des variables qui vous ont servi a faire des tests, prenez soin de les eacer en n de programme. V otrep rogrammed oitf onctionner...O r,la p rogrammatione stun et ^achepar ticu- lierement ardue, les programmes sont buggues. Il faut les debuguer. Pour cela, il faut verier que les fonctions se comportent bien comme vous le souhaitez. Cela passe par des tests

2. Beaucoup de tests. Ou plus precisement, des tests bien choisis

et le plus exhaustifs possibles. Il es tp referablede s eparerla c reationd esf onctionset l est estsq uev ousee ctuez dans deux chiers dierents. Les nom sd e chiersou d er epertoiresn ed oiventpas c omporterd' accentni d 'espace (les caracteres speciaux ne sont pas geres de la m^eme maniere sous Linux et sous Windows, les transferts de l'un vers l'autre posent problemes).

1.2.2 Les tests

Qu'est-ce que tester?

Tester, c'est verier que ce que vous avez programme se comporte bien comme vous le voulez. Par exemple, si vous programmez la fonctioncarrequi calcule le carre d'un nombre, vous vous attendez a ce quecarre(2)donne 4 etcarre(-3)donne 9. Sicarre(-

3)donne -9, c'est qu'il y a une erreur dans votre programme. Les tests sont la pour

debusquer ce genre d'erreur.

Les tests en pratique2. Notez que letest informatiqueest un concept completement dierent dutest statistique...

8CHAPITRE 1. CREATION D'UN PACKAGE CLASSIQUE

Denir un test pour une fonction, c'est donner le resultat attendu relativement a une certaine entree. La conception d'un test est donc completement independante de la programmation de la fonction. En theorie, les tests se construisent avant l'ecriture du programme. Exemple : la fonctionimputedu packagekmla pour mission de remplacer une valeur manquante au tempsipar la moyenne des autres mesures presentes. Considerons les trajectoires0 B @3 12 23

4NA NA

NA NA251

C A. La valeur manquante de la premiere colonne devrait ^etre remplacee par la moyenne def3;4gc'est a dire 3:5 Les valeurs manquantes de la deuxieme colonnes devraient ^etre remplacees par 12. La valeur manquante de la troisieme colonne devrait ^etre remplacee par la moyenne def23;25gc'est-a-dire 24 Au nal, apres imputation, nos trajectoires devraient ^etre0 B @3 12 23

4 12 24

3:5 12 251

C A. Nous venons de denir un test informatique. Notez qu'il est independant de la fonc- tion implementee. Le test est l'expression de ce que l'on souhaite, pas de ce qui existe. Une fois le test concu, on peut verier que ce que l'on aprogramme est bien conforme a ce que l'on veutprogrammer. Dans notre cas, il s'agit de verier que la fonctionimpute reagit bien comme elle devrait. Naturellement, un unique test est tres insusant, il en faut bien d'autres.

Combien de tests? Quoi tester?

Les tests doivent vous permettre de verier que votre programme fonctionne correc- tement et cela dans tous les casm^eme ceux auxquels vous ne pensez pas mais qui se presenteront s^urement un jour!Dicile de prevoir m^eme ce a quoi il nous est impossible de penser. Pour palier a ce \manque d'imagination", il est important de bien choisir ses tests : en prevoir un grand nombre mais surtout, prevoir des tests les plus varies possibles. A ce sujet, une petite anecdote : mon bin^ome et moi avions 16 ans; c'etait l'epoque des premiers compatibles PC. Nous avions cours d'informatique (turbo pascal). Le probleme du jour etait de construire la fonctionf(x;y) =xy. Apres avoir fait au moins 50 tests, nous appelons l'enseignant. Ex prof de math, un pince sans rire. Il arrive sans un mot, il tape 2

0et crack, notre programme plante. Il repart, toujours sans un mot... Nous n'avions

pas pense a la puissance zero. Rageurs, nous reprenons notre code, nous corrigeons, nous eectuons au moins 200 tests (parce qu'appeler le prof quand ca ne marche pas, a cet ^age-la, c'est un peu la honte) et nous rappelons le prof. Il tape 0

2, ca marche. Victoire!

De courte duree : il essaie 0

0et crack, ca replante... Une demi-heure plus tard, il nous

fait boire notre calice jusqu'a sa lie avec22... Cette petite anecdote illustre bien le fait qu'il est plus important de bien choisir ses tests que de les multiplier. Faire 50 tests comme 2

3, 34, 82, ... a bien moins d'inter^et que

les 9 petits tests 2

3, 03,43, 20, 00,40, 25, 05et45

1.2. CR

EATION D'UN PROGRAMME... QUI FONCTIONNE!9

Au nal, pour tester une fonction, il faut essayer de trouver tous les types d'entrees qu'un utilisateur pourrait avoir a saisir (dans la mesure ou il respecte les specica- tions de la fonction : nous n'aurions pas a nous occuper d'un utilisateur qui essaierait carre("bonjour")) et de verier que le resultat est bien conforme a ce qu'on attend.

Des tests compatibles R Core team... ou pas?

La R Core Team a mis au point un systeme de gestion de tests automatiques tres performant mais un peu dicile a utiliser pour le programmeur non expert. Il neces- site en particulier d'avoir un package compilable (selon les conditions que nous verrons section 1.7.2 page 28) m^eme pendant sa construction. L'expert developpe son package en s'assurant qu'il est compilable et ecrit en parallele un chier de test qui commence par l'instructionlibrary(monPackage). Quand il veut faire ses tests, il compile son pa- ckage, puis execute son chier test. La premiere instruction, le chargement du package, lui assure que toutes les fonctions qu'il a denies sont eectivement chargees en memoire en conditions reelles. Ainsi fait l'expert. A notre niveau, une telle demarche est impossible. En eet, la compilation d'un package presente en elle-m^eme des dicultes, melanger ces dicultes avec celles de la creation d'un programme serait informatiquement suicidaire. Autre probleme, les tests automatiques ne permettent de tester que les fonctions qui seront au nal accessibles a l'utilisateur mais pas les fonctions intermediaires qui seraient utilisees en interne dans le pacakge (les concepts de fonctionsinternesetaccessibles a l'utilisateurseront abordes section 1.4.1 page 16). Dans ce livre, nous allons donc laisser de c^ote la gestion des tests automatiques pour experts et proposer une gestion alternative, certes manuelle, mais plus accessible.

1.2.3 Le programme

Notre package classique s'appellepackClassic. C'est ce qu'on appelle un \toy example", il n'a d'inter^et que sa simplicite... Il est constitue d'une base de donnees appeleedataAges.Rdaet de deux chiersprogClassic.RettestsProgClassic.R. 1. Not rebas ed ed onneesdataAges.Rdaest situee dans le repertoire /packClassic/data/. En theorie, c'est une gigantesque base de donnees d'unequotesdbs_dbs14.pdfusesText_20