Bagaimana saya bisa memuat banyak paket sekaligus tanpa mengetik ulang perintah yang diperlukan berulang kali? Saya sudah mencoba tiga pendekatan yang semuanya crash dan burn.
Pada dasarnya, saya ingin menyediakan vektor nama paket ke fungsi yang akan memuatnya.
x<-c("plyr", "psych", "tm")
require(x)
lapply(x, require)
do.call("require", x)
x
?lapply
trik ini ke aslilibrary()
. Jadilah yang hebat untuk bisa mengatakan:library(c("plyr", "umx"))
Pacman paket CRAN yang saya pertahankan (ditulis dengan Dason Kurkiewicz) dapat mencapai ini:
Jadi pengguna dapat melakukan:
dan jika paket tersebut hilang
p_load
akan mengunduhnya dari CRAN atau Bioconductor.sumber
p_load
? Nama yang lebih deskriptif sepertiload_packages
membuat maksud fungsi lebih jelas.p_
. Ditambah lagi, kita cenderung menggunakan perpustakaan sedikit dan itu 7 karakter tambahan. 7 karakter x ~ 10.00000 penggunaan seumur hidup dari fungsi x 0,5 detik per karakter = 3500000 detik. Itu adalah 58333,33 menit, 972.2222 jam atau 40.50926 hari kehidupan seorang programmer yang telah kami berikan kembali kepada mereka :-) Bagaimanapun tujuan kami adalah mendorong ke CRAN pada 1 Februarip_
awalan agak meragukan. Jika terseness adalah masalah, hapusp_
awalan sepenuhnya. Bahkan, memiliki awalan seperti itu umumnya tidak disarankan dalam bahasa lain untuk alasan yang baik (saya sudah memberi tahu Hadley bahwa mereka sama denganfct_
omong kosongnya dalam forcats). Ini terutama benar karena tujuan penggunaan paket th adalah dengan namespace yang memenuhi syarat (pacman::
).Ini harus melakukan trik:
(Kuncinya adalah
args
argumen dido.call(what, args)
harus berupa daftar --- walaupun hanya memiliki satu elemen!)sumber
Untuk seseorang yang ingin menginstal dan memuat paket secara bersamaan, saya menemukan fungsi ini dari tautan ini
sumber
Opsi alternatif berasal dari paket
easypackages
. Setelah diinstal, Anda dapat memuat paket dengan cara yang paling intuitif:Paket ini juga mencakup fungsi untuk menginstal beberapa paket:
Referensi di sini .
sumber
library
fungsi, merujuk ke lokasi di mana paket diinstal: perpustakaan paket . Memuat beberapa paket vialibraries
tidak masuk akal. Memiliki fungsi terpisahpackages
yang melakukan sesuatu yang lain hanya membuat ini lebih buruk. Saya tahu penamaan adalah masalah yang sulit dalam rekayasa perangkat lunak tetapi sebenarnya. Nama-nama ini sangat buruk.libraries
tidak masuk akal. Ini jamaklibrary
, danlibrary
memuat satu paket;libraries
memuat sejumlah paket. Jika Anda menganggapnyalibrary
sebagai "memuat dari perpustakaan Anda", dan memperluasnya menjadilibraries
"memuat dari berbagai perpustakaan", maka itu mungkin tidak intuitif, tapi itu bukan maksudnya; Saya akan cukup senang dengan namanyalibraries
.Anda cukup menggunakan paket lubripack dan menginstal paket baru dengan rapi lalu memuat semuanya dalam satu baris.
Ini adalah output setelah Anda menjalankan kode di atas di RStudio.
Cara Memasang Paket:
Jalankan kode di bawah ini untuk mengunduh paket dan menginstalnya dari GitHub. Tidak perlu memiliki Akun GitHub.
sumber
Membangun solusi daroczig, jika Anda tidak ingin menentukan daftar sebagai input yang dapat Anda gunakan
... yang lebih pendek dari
sumber
Saya menggunakan fungsi berikut:
Ini mencoba memuat, dan jika gagal menginstal dan kemudian mencoba memuat lagi.
sumber
Saya pikir kode yang telah disediakan @daroczig dapat ditingkatkan dengan mengganti
require
denganlibrary
dan membungkuslapply
panggilan di dalaminvisible()
fungsi. Jadi, kode yang ditingkatkan akan terlihat seperti berikut:Kode ini ditingkatkan karena:
library()
umumnya lebih disukai daripadarequire()
untuk memuat paket karena yang pertama memberikan kesalahan jika paket tidak diinstal sementara yang terakhir hanya memberikan peringatan. Apalagirequire()
panggilanlibrary()
, kenapa tidaklibrary()
langsung pakai saja !Objek daftar dikembalikan dan dicetak oleh
lapply()
panggilan tidak berarti dalam kasus ini, jadi masuk akal untuk membuat output tidak terlihat. Katakanlah Anda menggunakan R Notebook untuk pekerjaan analisis Anda, menggunakaninvisible()
fungsi akan menekan isi objek daftar dan mencegah kekacauan dalam file notebook yang diberikan.sumber
Mod sedikit dari jawaban Tyler Rinker untuk menambahkan tanda centang untuk menginstal & memuat pacman:
Saya suka solusi p_load karena menghindari mengutip!
sumber