الحزم التي تستخدم data.table (وأعتقد أن dplyr أيضًا) تحصل على هذه الملاحظة (ربما كثيرة) من فحص R CMD. هل هناك أي شيء يمكننا القيام به؟ إنها مجرد ملاحظة لذلك يمكن تجاهلها ، ولكن مع ذلك.
ربما توفر وظيفة تكتشف هذه الرموز وتقوم بإنشاء استدعاء globalVariables()
تلقائيًا لمؤلف الحزمة.
http://stackoverflow.com/questions/15409806/r-package-compilation-with-dependency-on-data-table
http://stackoverflow.com/questions/8096313/no-visible-binding-for-global-variable-note-in-r-cmd-check
IIUC ، سيحتاج إلى تغيير "R CMD check" لجعله على دراية "بالتقييم غير القياسي" الذي يستخدمه كل من data.table و dplyr. هذه مشكلة صعبة (ربما مستحيلة بدون تشغيل الكود). لذلك تمت إضافة الدالات ?globalVariables
إلى R في 2.15.1 وربما يكون أقل شهرة هو أنه تمت إضافة ?dontCheck
في R 3.1.0 والذي يمكن استخدامه لالتفاف الاستعلامات باستخدام NSE. هذه أفضل من <-NULL
والتي تنطوي على مخاطر إسكات الأخطاء الحقيقية (أو ربما إنشاء أخطاء جديدة) في مناطق أخرى من الكود ، بالإضافة إلى تلك التي تستخدم NSE.
لا يمكن بالضرورة تجاهله ؛ تم رفض بعض الحزم ، وطلب CRAN من المؤلفين استخدام globalVariables
لإلغاء الملاحظات. على سبيل المثال:
أهلا،
إنها قضية قديمة ولكنها لم تغلق. كنت أتساءل ما إذا كان هناك الآن حل جديد؟
وبخلاف ذلك ، ما هي الممارسة الجيدة التي يجب اتباعها؟ لا يزال globalVariables
؟
تعجبني فكرة
دالة تكشف هذه الرموز وتنشئ
globalVariables()
شكرا لك.
cderv ، يمكنك فقط تعيين NULL للمتغير قبل استخدامه (لا تخلط بينه وبين تجاوزه). لذلك فأنت لا تحدد المتغيرات العالمية ، ولكن تقوم فقط بتعريفها محليًا في وظيفة تستخدمها فيها. لا أعتقد أننا بحاجة إلى معالجة ذلك بأي طريقة خاصة. يتم الإغلاق في الوقت الحالي لأن المشكلة تنتظر عامين بدون تحديد نقاط العمل ، وهي ليست مشكلة في جدول البيانات حقًا.
التعليق الأكثر فائدة
cderv ، يمكنك فقط تعيين NULL للمتغير قبل استخدامه (لا تخلط بينه وبين تجاوزه). لذلك فأنت لا تحدد المتغيرات العالمية ، ولكن تقوم فقط بتعريفها محليًا في وظيفة تستخدمها فيها. لا أعتقد أننا بحاجة إلى معالجة ذلك بأي طريقة خاصة. يتم الإغلاق في الوقت الحالي لأن المشكلة تنتظر عامين بدون تحديد نقاط العمل ، وهي ليست مشكلة في جدول البيانات حقًا.