Comment démasquer une fonction dans R, en raison de collisions de noms sur le chemin de recherche

StackOverflow https://stackoverflow.com/questions/3241539

Question

Quand j'ai chargé le paquet debug déboguer un script avec zoo objets, j'ai eu des problèmes :fonction index depuis zoo j'ai été masqué par debug emballer.Comment puis-je démasquer index?De manière générale, comment gérer ces problèmes de collision de noms ?Nous n'utilisons tout simplement pas debug un paquet avec « zoo » ?

Était-ce utile?

La solution

Les symboles exportés sont toujours identifiables par le :: opérateur:

zoo::index

Les fonctions cachées non déclarées dans l'espace de noms sont toujours accessibles en utilisant ::: (triple deux-points), et l'exemple serait

zoo:::.onLoad

que vous pouvez voir même s’il n’est pas exporté.

Autres conseils

Vous pouvez décharger le package qui a des fonctions masquées puis le recharger.Il retrouvera la priorité dans le chemin de recherche :

unloadNamespace("zoo")
library("zoo")

À l'avenir, si vous souhaitez charger un package tout en l'empêchant de masquer d'autres fonctions, vous pourrez spécifier sa position dans le chemin de recherche avec un nombre arbitrairement grand :

library("debug", pos = .Machine$integer.max)

C'est seulement masqué pour vous mais ce n'est pas masqué pour le zoo, donc lorsqu'une fonction de zoo essaie d'utiliser l'index, elle trouvera toujours son propre index en premier.

zoo a également une méthode time.zoo donc si z est un objet zoo, vous pouvez utiliser time(z) à la place d'index(z).

Enfin, vous pouvez toujours vous référer à zoo::index pour vous assurer d'obtenir celui de zoo.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top