2010-05-27 4 views

Répondre

4

Selon l'aide de la fonction, require is designed for use inside other functions; it returns FALSE and gives a warning (rather than an error as library() does by default) if the package does not exist

et plus tard ...

The source code for a package that requires one or more other packages should have a call to require, preferably near the beginning of the source, and of course before any code that uses functions, classes or methods from the other package

0

Le format standard semble être

if(!require(the_package)) 
{ 
    #Maybe try an alternative or do some cleanup here 
    stop("You must install the package 'the_package'.") 
} 

Si votre package utilise un autre package largement , alors vous devriez charger ce paquet lorsque votre paquet est initialisé, c'est à dire dans le .First.lib La fonction l'ajoute au champ Depends de votre paquet Description du fichier. Si le paquet n'est utilisé que par une ou deux de vos fonctions, alors ce bout de code va au début de ces fonctions.

+0

Savez-vous s'il y a une fonction qui fait comme si { install.packages (de "the_package") (require (the_package)!); require (the_package) } –

+0

@Etiennebr: Je ne pense pas, puisque les utilisateurs peuvent être particulièrement soucieux de l'installation des paquets, plutôt que d'avoir subrepticement des fonctions pour eux. –

4

En utilisant le champ Depends: du fichier DESCRIPTION de votre colis.

C'est encore une autre raison pour laquelle vous préférez utiliser des paquets plutôt que de vous contenter des fichiers source() -ing.

Édition: Il existe également Imports: dans DESCRIPTION. Mais le point général est que R a un mécanisme de dépendance et vous serez mieux si vous l'utilisez.

Questions connexes