Как разоблачить функцию в R

Когда я загрузил пакет debug для отладки script с объектами zoo, у меня возникла проблема: функция index из zoo была замаскирована пакетом debug. Как разоблачить index? В общем, как бороться с этими проблемами сталкиваются имена? Мы просто не используем пакет debug с `zoo '?

Ответ 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, чтобы убедиться, что вы получили его в зоопарке.