Как разоблачить функцию в R из-за конфликтов имен в пути поиска

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

Вопрос

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

Это было полезно?

Решение

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

zoo::index

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

zoo:::.onLoad

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

Другие советы

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

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

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

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

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

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

Наконец, вы всегда можете обратиться к Zoo::index, чтобы убедиться, что вы получите тот, который находится в зоопарке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top