Saya ingin membongkar sebuah paket tanpa harus me-restart R (kebanyakan karena me-restart R ketika saya mencoba berbeda, paket-paket yang saling bertentangan semakin membuat frustrasi, tetapi mungkin ini dapat digunakan dalam suatu program untuk menggunakan satu fungsi dan kemudian yang lain - walaupun namespace referensi mungkin adalah ide yang lebih baik untuk penggunaan itu).
?library
tidak menunjukkan opsi apa pun yang akan menurunkan paket.
Ada saran yang detach
dapat menurunkan paket, tetapi berikut ini keduanya gagal:
detach(vegan)
Galat dalam
detach(vegan)
:name
argumen tidak valid
detach("vegan")
Galat dalam
detach("vegan")
:name
argumen tidak valid
Jadi bagaimana saya membongkar paket?
.libPaths()
Memberi Anda jalan ke semua perpustakaan di sistem Anda.library
dalam dua cara: 1 - itu bukan penggunaan yang samalibrary
seperti di tempat lain, dan 2 - istilah ini digunakanlibrary()
untuk memuat ... bukan perpustakaan, tetapi sebuah paket.require
" atau "membatalkanlibrary
" karena itulah bagaimana saya biasanya memuat, erm, "paket". Jadi, titling dengan benar membuat pertanyaan lebih benar tetapi juga lebih sulit ditemukan.Jawaban:
Coba ini (lihat
?detach
untuk lebih jelasnya):Dimungkinkan untuk memiliki beberapa versi paket dimuat sekaligus (misalnya, jika Anda memiliki versi pengembangan dan versi stabil di perpustakaan yang berbeda). Untuk menjamin bahwa semua salinan terlepas, gunakan fungsi ini.
Penggunaannya, misalnya
atau
sumber
> detach("package:MASS", unload=TRUE) Error in detach("package:MASS", unload = TRUE) : invalid 'name' argument
Anda juga dapat menggunakan
unloadNamespace
perintah, seperti pada:Fungsi ini melepaskan namespace sebelum membongkar.
sumber
Anda dapat menghapus centang pada tombol kotak centang di RStudio (paket).
sumber
detach("package:packageToUnload", unload=TRUE)
perintah yang dieksekusi dan tidak berbeda dengan solusi yang sudah diusulkan.Saya mencoba apa yang kohske tulis sebagai jawaban dan saya mendapatkan kesalahan lagi, jadi saya melakukan pencarian dan menemukan ini yang berfungsi untuk saya (R 3.0.2):
atau juga
sumber
Saat Anda bolak-balik di antara skrip, terkadang hanya perlu membongkar sebuah paket. Berikut adalah pernyataan IF sederhana yang akan mencegah peringatan yang akan muncul jika Anda mencoba membongkar paket yang saat ini tidak dimuat.
Memasukkan ini di bagian atas skrip mungkin bermanfaat.
Saya harap itu membuat hari Anda!
sumber
detach(package:PackageName)
berfungsi dan tidak perlu menggunakan kutipan.sumber
Anda dapat mencoba semua yang ingin Anda hapus paket (dan semua dependensi yang dibawanya bersama) menggunakan
unloadNamespace()
tetapi jejak memori masih akan tetap ada. Dan tidak,detach("package:,packageName", unload=TRUE, force = TRUE)
tidak akan berhasil juga.Dari konsol baru yang baru atau
Session > Restart R
periksa memori denganpryr
paket:Periksa saya
sessionInfo()
Mari memuat
Seurat
paket dan memeriksa jejak memori baru :Mari kita gunakan
unloadNamespace()
untuk menghapus semuanya:Sekarang periksa
sessionInfo()
:Periksa jejak memori :
Tautan ke demonstrasi pemeran layar
sumber
Saya ingin menambahkan solusi alternatif. Solusi ini tidak secara langsung menjawab pertanyaan Anda tentang menurunkan paket tetapi, IMHO, memberikan alternatif yang lebih bersih untuk mencapai tujuan yang Anda inginkan, yang saya mengerti, secara luas berkaitan dengan menghindari konflik nama dan mencoba berbagai fungsi, seperti yang dinyatakan:
Larutan
Fungsi yang
with_package
ditawarkan melaluiwithr
paket menawarkan kemungkinan untuk:Contoh
geom_point
digunakan dalam contoh ini tidak dapat diakses dari namespace global. Saya rasa ini mungkin cara yang lebih baik untuk menangani konflik daripada memuat dan membongkar paket.sumber
Perhatikan juga bahwa Anda hanya dapat menggunakan
unload()
satu kali. Jika Anda menggunakannya untuk kedua kalinya tanpa menjalankan ulanglibrary()
, Anda akan mendapatkan argumen 'nama' pesan kesalahan yang tidak terlalu informatif :Dibuat pada 2020-05-09 oleh paket reprex (v0.3.0)
sumber
Cukup buka jendela OUTPUT, lalu klik ikon Paket (ini terletak di antara Plot dan ikon Bantuan ). Hapus " centang / centang " dari paket yang Anda inginkan diturunkan.
Untuk menggunakan kembali paket tersebut, cukup beri tanda " centang atau centang " di depan paket atau gunakan:
sumber
Pilihan lainnya adalah
Ini tampaknya juga berkaitan dengan masalah metode S3 terdaftar yang tidak dihapus dengan
unloadNamespace()
sumber