كيفية كشف وظيفة في R، بسبب تضارب الأسماء في مسار البحث
-
15-09-2020 - |
سؤال
عندما قمت بتحميل الحزمة 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) بدلاً من الفهرس(z).
أخيرًا، يمكنك دائمًا الرجوع إلى Zoo::index للتأكد من حصولك على الموجود في حديقة الحيوان.