306
Le logiciel R - Maˆ ıtriser le langage
Notez cependant que dans la premi` ere ligne ci-dessus, il est aussi suppos´ e que les valeurs par d´ efaut des param` etres des fonctions Fen^ etre(),
Cercle() et Rectangle() ont ´ et´ e fix´ ees de mani` ere appropri´ ee.
6.8- Pour finaliser cet exercice, on peut aussi, par pur souci d’´ el´ egance, proposer la fonction g´ en´ erique affiche() (ou tout autre nom de votre choix)
qui permettra de lancer les m´ ethodes plot() et donc de proposer l’utilisation fran¸ caise ci-dessous :
graphe <- Graphe(Cercle(),Rectangle())
affiche(graphe)
6.9- Le projet est donc lanc´ e avec la mise en place de ce premier prototype. Il
ne vous reste plus qu’` a le compl´ eter en le fa¸ connant ` a votre goˆ ut. Si vous
manquez d’inspiration, pensez ` a proposer la gestion de la liste des objets
graphiques (par exemple, la suppression et la modification), la gestion des
styles d’affichage, l’affichage d’´ eventuels axes...
C- Cr´ eation d’une classe lm2 pour la r´ egression lin´ eaire avec deux
r´ egresseurs
L’objectif est ici de reproduire la mˆ eme d´ emarche que celle utilis´ ee par
nos deux comp` eres pour la r´ egression simple. La repr´ esentation graphique sera
rendue possible grˆ ace ` a l’excellent package rgl qui est une interface d’OpenGL
pour le syst` eme R. Compte tenu de la difficult´ e technique de ce chapitre, nous
proposons ici le d´ eveloppement de fonctions (en fait de m´ ethodes). Compte tenu
de la technicit´ e de certains points, l’objectif se limitera ici ` a comprendre toutes
les ´ etapes du d´ eveloppement des fonctions suivantes. Cet exercice s’adresse
plutˆ ot aux utilisateurs un peu plus avanc´ es.
La fonction suivante fournit un objet de la classe lm2 tout en h´ eritant de la
classe standard lm.
1 lm2 <- function (...) {
2
obj <- lm (...)
3
if ( ncol ( model . frame ( obj )) != 3)
4
stop ( "Deux variables ind´ ependantes sont requises!" )
5
class ( obj ) <- c(" lm2 " , class ( obj )) # ou c("lm2","lm")
6
obj
7 }
`
A titre d’exemple, ex´ ecutons les lignes suivantes :
> n <- 20
> x1 <- runif(n,-5,5)
> x2 <- runif(n,-50,50)
> y <- 0.3+2 * x1+2 * x2+rnorm(n,0,20)
> reg2 <- lm2(y∼x1+x2)
Précédent

- 339/701

Suivant