Как снять маску с функции в R из-за конфликта имен на пути поиска - PullRequest
10 голосов
/ 14 июля 2010

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

Ответы [ 3 ]

11 голосов
/ 09 мая 2013

Вы можете выгрузить пакет с маскированными функциями, а затем перезагрузить его.Он восстановит приоритет в пути поиска:

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

В будущем, если вы хотите загрузить пакет, не давая ему маскировать другие функции, вы можете указать его позицию в пути поиска с произвольным большим числом:

library("debug", pos = .Machine$integer.max)
10 голосов
/ 14 июля 2010

Экспортируемые символы всегда можно идентифицировать с помощью оператора :::

zoo::index

Доступ к скрытым функциям, не объявленным в пространстве имен, по-прежнему можно получить с помощью ::: (тройное двоеточие), например:

zoo:::.onLoad

, который вы можете видеть, даже если он не экспортируется.

4 голосов
/ 14 июля 2010

Он маскируется только для вас, но не маскируется для зоопарка, поэтому, когда функция зоопарка пытается использовать индекс, она все равно сначала найдет свой собственный индекс.

zoo также имеет метод time.zoo, поэтому, если z является объектом zoo, вы можете использовать time (z) вместо index (z).

Наконец, вы всегда можете обратиться к zoo :: index, чтобы убедиться, что вы нашли его в zoo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...