كيفية كشف وظيفة في 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) بدلاً من الفهرس(z).

أخيرًا، يمكنك دائمًا الرجوع إلى Zoo::index للتأكد من حصولك على الموجود في حديقة الحيوان.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top