Когда я загрузил пакет debug
для отладки script с объектами zoo
, у меня возникла проблема: функция index
из zoo
была замаскирована пакетом debug
. Как разоблачить index
? В общем, как бороться с этими проблемами сталкиваются имена? Мы просто не используем пакет debug
с `zoo '?
Как разоблачить функцию в R
Ответ 1
Экспортированные символы всегда идентифицируются с помощью оператора ::
:
zoo::index
Скрытые функции, не объявленные в пространстве имен, по-прежнему можно получить с помощью :::
(тройной двоеточие), а пример будет
zoo:::.onLoad
который вы можете видеть, даже если он не экспортируется.
Ответ 2
Вы можете выгрузить пакет с маскированными функциями, а затем перезагрузить его. Он вернет приоритет в пути поиска:
unloadNamespace("zoo")
library("zoo")
В будущем, если вы хотите загрузить пакет, не позволяя ему маскировать другие функции, вы можете указать его позицию в пути поиска с произвольным большим числом:
library("debug", pos = .Machine$integer.max)
Ответ 3
Он только маскируется вам, но не замаскирован в зоопарк, поэтому, когда функция зоопарка пытается использовать индекс, он все равно найдет свой собственный индекс.
zoo также имеет метод time.zoo, поэтому, если z является объектом zoo, вы можете использовать time (z) вместо индекса (z).
Наконец, вы всегда можете обратиться к zoo:: index, чтобы убедиться, что вы получили его в зоопарке.