Paket yang menggunakan data.table (dan saya percaya dplyr juga) mendapatkan CATATAN ini (mungkin banyak) dari pemeriksaan R CMD. Apakah ada yang bisa kita lakukan? Itu hanya CATATAN jadi bisa diabaikan, tapi meski begitu.
Mungkin menyediakan fungsi yang mendeteksi simbol-simbol itu dan membuat panggilan globalVariables()
secara otomatis untuk pembuat paket.
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, itu akan membutuhkan perubahan ke 'R CMD check' untuk membuatnya sadar akan "evaluasi non-standar" yang digunakan oleh data.table dan dplyr. Itu adalah masalah yang sulit (bahkan mungkin tidak mungkin tanpa menjalankan kode). Jadi fungsi ?globalVariables
telah ditambahkan ke R di 2.15.1 dan mungkin yang kurang dikenal adalah bahwa ?dontCheck
telah ditambahkan di R 3.1.0 yang dapat digunakan untuk membungkus kueri menggunakan NSE. Ini lebih baik daripada <-NULL
yang memiliki risiko membungkam kesalahan yang sebenarnya (atau mungkin membuat yang baru) di area lain dari kode, serta yang menggunakan NSE.
Tidak bisa selalu diabaikan; beberapa paket ditolak, dan penulis diberitahu oleh CRAN untuk menggunakan globalVariables
untuk menekan CATATAN. Misalnya:
Hai,
ini adalah masalah lama tetapi tidak ditutup. Saya bertanya-tanya apakah sekarang ada solusi baru?
Jika tidak, praktik baik apa yang harus diikuti? masih globalVariables
?
Saya suka ide
fungsi yang mendeteksi simbol-simbol itu dan membuat
globalVariables()
Terima kasih.
@cderv Anda bisa menetapkan NULL ke variabel sebelum menggunakannya (tidak bingung dengan menimpanya). Jadi Anda tidak mendefinisikan variabel global, tetapi hanya mendefinisikannya secara lokal dalam fungsi di mana Anda menggunakannya. Saya rasa kita tidak perlu membahasnya dengan cara khusus. Penutupan untuk saat ini karena masalah ini menunggu selama 2 tahun tanpa poin tindakan yang ditentukan, dan sebenarnya bukan masalah data.table.
Komentar yang paling membantu
@cderv Anda bisa menetapkan NULL ke variabel sebelum menggunakannya (tidak bingung dengan menimpanya). Jadi Anda tidak mendefinisikan variabel global, tetapi hanya mendefinisikannya secara lokal dalam fungsi di mana Anda menggunakannya. Saya rasa kita tidak perlu membahasnya dengan cara khusus. Penutupan untuk saat ini karena masalah ini menunggu selama 2 tahun tanpa poin tindakan yang ditentukan, dan sebenarnya bukan masalah data.table.