276
Le logiciel R - Maˆ ıtriser le langage
Linux
Sous Linux :
g++ -c combnCF.cpp -o combnCF.o -I"/usr/lib/R/include" -fPIC
gfortran -c combn.f90 -o combn.o -fPIC
g++ -shared -o combnCF.so combnCF.o combn.o \
-I"/usr/lib/R/include" -L"/usr/lib" -lR
Modifiez ` a pr´ esent le code de la fonction combnRC() pr´ esent´ e en page 260 :
– changez le nom de cette fonction pour combnRCF() ;
– remplacez "combn" et "combnC" par "combnCF".
Enregistrez ce nouveau code dans un fichier nomm´ e combnCF.R. Puis tapez les
deux instructions ci-dessous dans la console de R :
> source("combnCF.R")
> combnRCF(5,3)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]
1
1
1
1
1
1
2
2
2
3
[2,]
2
2
2
3
3
4
3
3
4
4
[3,]
3
4
5
4
5
5
4
5
5
5
6.5.4 Appel d’un code R depuis un programme C/C++
appel´ e par R
Nous avons vu comment il ´ etait possible d’appeler une routine C/C++ (ou
Fortran) depuis R. Il est ´ egalement possible d’appeler des fonctions R depuis un
programme C/C++. Pour cela, il faudra utiliser un certain type de pointeur appel´ e SEXP (pour Simple EXPression) ainsi que la fonction .Call(). Dans cette
sous-section, nous nous contentons de fournir un simple exemple. Le lecteur
pourra s’en inspirer pour ´ elaborer des exemples plus compliqu´ es.
Renvoi
Le lecteur pourra consulter avec profit le site http://cran.r-project.
org/doc/manuals/R-exts.html#Handling-R-objects-in-C.
Nous allons montrer dans l’exemple suivant comment il est possible d’appeler la fonction pmvt() du package mvtnorm depuis un code C/C++, lui-mˆ eme
appel´ e par R. La fonction pmvt() calcule la probabilit´ e qu’un vecteur al´ eatoire
suivant une loi de Student multivari´ ee produise une valeur dans un pav´ e de R
n
` a sp´ ecifier.
Contrairement aux exemples des sections pr´ ec´ edentes qui utilisaient la fonction .C(), nous allons ici devoir utiliser la fonction .Call(). Par ailleurs,
Précédent

- 309/701

Suivant