Next: D'autres remarques concernant
Up: Comment écrire des
Previous: Un exemple
La syntaxe générale pour les fonctions est:
-
- noms <- function( ... ) { ... }
Les parenthèses après function contiennent les
paramètres de la fonction; les accolades contiennent le
programme principal.
Vous pouvez utiliser des fonctions à l'intérieur de fonctions
et il est possible de les appeler de manière récursive.
Pour écrire vos fonctions personnelles, nous vous conseillons d'utiliser
la commande fix(). Choisissez d'abord votre
éditeur de texte préféré (par exemple vi, ame, (x)emacs, xedit ou bien asedit
sur nos stations Silicon Graphics) avec la commande
-
- options(editor="ame") (On pourrait mettre cette commande dans .First Voir chapitre
L'organisation du travail avec S-Plus)
puis tapez fix(nom.de.fonction).
Comme exercice, écrivez une fonction
pour calculer le déterminant d'une matrice carrée, fonction qui n'existe
pas encore dans S-PLUS. Tapez donc fix(absdet)
et une fenêtre de l'éditeur choisi s'ouvre avec la structure de
base des fonctions. Ecrivez maintenant dans le fichier le code suivant (C'est en effet la valeur absolue du déterminant):
function(x)
{
if(!is.matrix(x))
stop("Ce n'est pas une matrice")
if((dim(x)[1])!=(dim(x)[2]))
stop("La matrice n'est pas carree")
val.singulieres <- svd(x)$d
prod(val.singulieres)
}
Quittez après l'éditeur (seulement écrire sans quitter ne suffit pas)
et la nouvelle fonction est prête à être utilisée. Tapez absdet
pour la voir et x <- matrix(1:4,ncol=2,byrow=T) puis absdet(x)
pour la tester. Avec fix() vous pouvez éditer à nouveau votre fonction.
Un autre moyen - certes moins sophistiqué - pour créer des nouvelles fonctions est
le suivant: écrivez le code de la
fonction dans votre éditeur en changeant la première ligne par
absdet <- function(x)
et sauvez le fichier sous le nom `` absdet.s'' dans le directoire à
partir duquel vous lancez S-PLUS.
Remarque
importante:
Il est nécessaire de faire un saut de ligne après la
dernière accolade du code, sinon S-PLUS
ne pourra pas le lire!
Exécuter après dans
S-PLUS
la commande
-
- source("absdet.s")
pour ainsi créer la nouvelle fonction.
La fonction source() est aussi utile dans le cas suivant: vous avez une suite
de commandes à exécuter et ceci plusieurs fois; écrivez alors ces commandes dans
un fichier et puis utilisez source("nom.du.ficher")
pour les exécuter.
Next: D'autres remarques concernant
Up: Comment écrire des
Previous: Un exemple
Marcel Baumgartner