3 votes

Comment forcer R à charger le paquet, `library()` échoue à cause de la dépendance ?

Comment forcer R à charger un paquet lorsque certains paquets (non cruciaux) dont il dépend ne sont pas installés ?

Motivation : je dois parfois utiliser R dans des endroits où je ne peux pas installer automatiquement les paquets nécessaires. Le faire manuellement prend beaucoup de temps et dans la plupart des cas, je n'ai besoin que d'une toute petite partie des fonctions contenues dans le paquetage installé.

Le message d'erreur typique dans ce cas est :

> library(packageX) Loading required package: packageY Error: package ‘packageY’ could not be loaded In addition: Warning messages: In library(pkg, character.only = TRUE, logical.return = TRUE, lib.loc = lib.loc) : there is no package called ‘packageY’

Peut-être que le paquet 'devtools' sera utile. Mais je ne l'ai pas étudié.

2voto

GSee Points 19079

Si vous ne pouvez pas installer les dépendances, je pense que votre seule option est de supprimer ces paquets du champ Depends du fichier DESCRIPTION du paquetX et d'essayer de reconstruire le paquetX.

1voto

Greg Snow Points 22040

Vous pouvez consulter les sources du paquet pour déterminer les fonctions dont vous avez besoin et les dépendances dont elles ont besoin. Vous pouvez collaborer avec l'auteur/le mainteneur du paquet pour cette partie. Vous pouvez créer une version privée du paquet qui n'a pas les dépendances et les autres fonctionnalités dont vous n'avez pas besoin.

Si c'est uniquement pour votre usage personnel et que la licence du paquet le permet (gpl et similaires), vous n'avez pas besoin de la permission de l'auteur pour extraire les morceaux que vous voulez. Si vous voulez lier votre paquet à celui-ci pour le distribuer, vous devez travailler avec l'auteur original. Je sais que deux auteurs de paquets ne voulaient que quelques fonctions de l'un de mes paquets et j'ai convenu que le chargement de l'ensemble de mon paquet (et de ses dépendances) était excessif pour ce qu'ils voulaient faire, j'ai donc travaillé avec eux et ils ont des copies des fonctions dans leur paquet sans avoir besoin de dépendre du mien. Lorsque je mets à jour l'une des fonctions, je leur envoie une copie pour qu'ils mettent également à jour leur copie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X