222
Le logiciel R - Maˆ ıtriser le langage
Astuce
Vous pouvez cr´ eer de nouveaux op´ erateurs pour d´ efinir des fonctions
d’ensembles, comme celles pr´ esent´ ees en page 105. Par exemple, la r´ eunion
entre deux ensembles A et B peut ˆ etre d´ efinie ainsi :
> "%union%" <- function(A,B) union(A,B)
> A <- c(4,6,2,7)
> B <- c(2,1,7,3)
> A %union% B
[1] 4 6 2 7 1 3
6.2.5 Le R vu comme un langage fonctionnel
Le R est un langage fonctionnel dans le sens o` u presque toute ex´ ecution
de code R se fait au moyen d’appels de fonctions, parsem´ es ´ eventuellement
de structures de contrˆ ole. Signalons quelques comportements du R dont on
ne soup¸ conne pas, ` a l’utilisation, qu’ils sont contrˆ ol´ es par des fonctions. Nous
avons vu que le simple appel d’un objet R se traduit par l’affichage de son
contenu. En fait, lors d’une telle instruction, le R appelle (de mani` ere transparente pour l’utilisateur) la fonction print() avec pour param` etre effectif le nom
de l’objet. Cette fonction a un statut tr` es particulier dans le R (car tr` es couramment utilis´ ee) et de plus amples pr´ ecisions seront fournies ult´ erieurement.
Toutes les op´ erations d’affectation (c’est-` a-dire instruction contenant <-) ont
leur ex´ ecution g´ er´ ee par des fonctions dont le nom contient (sans surprise) le
signe distinctif <5 . Le d´ eveloppement et la maintenance du syst` eme R peuvent
se r´ esumer ` a la construction d’une panoplie de fonctions. Il y a tout d’abord les
fonctions de base qui sont propos´ ees lors de l’installation de base du syst` eme R.
Elles sont g´ en´ eralement non modifiables par l’utilisateur
6 et lorsque c’est tout
de mˆ eme le cas, il est fortement d´ econseill´ e de les modifier pour ne pas rendre
votre syst` eme R inutilisable. La deuxi` eme famille de fonctions est celle des fonctions directement d´ evelopp´ ees en R
7 par n’importe quel utilisateur. Beaucoup
de fonctions sont propos´ ees par la communaut´ e des d´ eveloppeurs R par le biais
d’un syst` eme de packages (dont nous parlerons plus tard).
5. Pour vous en rendre compte, tapez en ligne de commande apropos("<-")
6. Le cœur du syst` eme R est d´ evelopp´ e dans le langage C pour des raisons ´ evidentes de
rapidit´ e d’ex´ ecution, ce qui permet de le rendre plutˆ ot r´ eactif lorsqu’il est utilis´ e en ligne de
commande.
7. Pour favoriser la rapidit´ e d’ex´ ecution, il est g´ en´ eralement possible de convertir une
fonction R en langage C puis de l’appeler depuis R via son API C.
Le logiciel R - Maˆ ıtriser le langage
Astuce
Vous pouvez cr´ eer de nouveaux op´ erateurs pour d´ efinir des fonctions
d’ensembles, comme celles pr´ esent´ ees en page 105. Par exemple, la r´ eunion
entre deux ensembles A et B peut ˆ etre d´ efinie ainsi :
> "%union%" <- function(A,B) union(A,B)
> A <- c(4,6,2,7)
> B <- c(2,1,7,3)
> A %union% B
[1] 4 6 2 7 1 3
6.2.5 Le R vu comme un langage fonctionnel
Le R est un langage fonctionnel dans le sens o` u presque toute ex´ ecution
de code R se fait au moyen d’appels de fonctions, parsem´ es ´ eventuellement
de structures de contrˆ ole. Signalons quelques comportements du R dont on
ne soup¸ conne pas, ` a l’utilisation, qu’ils sont contrˆ ol´ es par des fonctions. Nous
avons vu que le simple appel d’un objet R se traduit par l’affichage de son
contenu. En fait, lors d’une telle instruction, le R appelle (de mani` ere transparente pour l’utilisateur) la fonction print() avec pour param` etre effectif le nom
de l’objet. Cette fonction a un statut tr` es particulier dans le R (car tr` es couramment utilis´ ee) et de plus amples pr´ ecisions seront fournies ult´ erieurement.
Toutes les op´ erations d’affectation (c’est-` a-dire instruction contenant <-) ont
leur ex´ ecution g´ er´ ee par des fonctions dont le nom contient (sans surprise) le
signe distinctif <5 . Le d´ eveloppement et la maintenance du syst` eme R peuvent
se r´ esumer ` a la construction d’une panoplie de fonctions. Il y a tout d’abord les
fonctions de base qui sont propos´ ees lors de l’installation de base du syst` eme R.
Elles sont g´ en´ eralement non modifiables par l’utilisateur
6 et lorsque c’est tout
de mˆ eme le cas, il est fortement d´ econseill´ e de les modifier pour ne pas rendre
votre syst` eme R inutilisable. La deuxi` eme famille de fonctions est celle des fonctions directement d´ evelopp´ ees en R
7 par n’importe quel utilisateur. Beaucoup
de fonctions sont propos´ ees par la communaut´ e des d´ eveloppeurs R par le biais
d’un syst` eme de packages (dont nous parlerons plus tard).
5. Pour vous en rendre compte, tapez en ligne de commande apropos("<-")
6. Le cœur du syst` eme R est d´ evelopp´ e dans le langage C pour des raisons ´ evidentes de
rapidit´ e d’ex´ ecution, ce qui permet de le rendre plutˆ ot r´ eactif lorsqu’il est utilis´ e en ligne de
commande.
7. Pour favoriser la rapidit´ e d’ex´ ecution, il est g´ en´ eralement possible de convertir une
fonction R en langage C puis de l’appeler depuis R via son API C.
