232
Le logiciel R - Maˆ ıtriser le langage
Astuce
Les fonctions suivies d’un ast´ erisque sont ex´ ecutables, mais leur corps
de fonction n’est pas visualisable. On peut toutefois utiliser la fonction
getAnywhere().
> getAnywhere(formula.character)
A single object matching ‘formula.character’ was found
It was found in the following places
registered S3 method for formula from namespace stats
namespace:stats
with value
function (x, env = parent.frame(), ...)
{
ff <- formula(eval(parse(text = x)[[1L]]))
environment(ff) <- env
ff
}


6.3.4 H´ eritage de classe
Dans le cadre de notre probl´ ematique, l’utilisateur avanc´ e informe notre
utilisateur n´ eophyte que le R dispose d´ ej` a d’un ensemble de fonctions pour le
traitement des mod` eles lin´ eaires. En effet, la fonction lm() est d´ edi´ ee (comme
on le verra au chapitre 12) ` a ce type de traitement. Il lui dit cependant qu’` a sa
connaissance, les traitements particuliers qu’il propose sur le mod` ele de r´ egression lin´ eaire simple n’existent pas. Ils s’associent alors pour d´ evelopper cette
extension avec pour principal objectif de ne pas « r´ einventer la roue » et d’exploiter le mieux possible les capacit´ es existantes du syst` eme R.
Dans le concept de programmation orient´ ee objet, la notion d’h´ eritage de
classe semble appropri´ ee pour ce type d’extension. Le terme d’h´ eritage exprime
qu’un objet d’une certaine classe de base pourra aussi se comporter comme
tous les autres objets de classes suppl´ ementaires. Le syst` eme R dispose de ce
m´ ecanisme, et ce par un biais tr` es simple consistant ` a associer ` a un objet
une suite de classes. Ainsi, lorsqu’une m´ ethode est appliqu´ ee pour un certain
objet ayant une hi´ erarchie de classes, la premi` ere classe est d’abord sollicit´ ee.
Si la m´ ethode pour cette classe existe, alors elle est ex´ ecut´ ee. Dans le cas
contraire, le R teste si, dans la hi´ erarchie des classes, il existe une m´ ethode
ex´ ecutable. Si tel est le cas, celle-ci est ex´ ecut´ ee. Dans le cas contraire, la
m´ ethode par d´ efaut est ex´ ecut´ ee d` es lors que celle-ci est d´ efinie. Finalement, si
ce n’est toujours pas le cas, une erreur d’ex´ ecution est alors g´ en´ er´ ee. Comme
un exemple vaut souvent mieux qu’un long discours, illustrons cette notion sur
la probl´ ematique de nos deux associ´ es. Commen¸ cons par d´ eclarer la fonction
Précédent

- 265/701

Suivant