Bagaimana Anda menggunakan beberapa versi dari paket R yang sama?

Agar dapat membandingkan dua versi suatu paket, saya harus dapat memilih versi paket mana yang saya muat. Sistem paket R diatur secara default untuk menimpa paket yang ada, sehingga Anda selalu memiliki versi terbaru. Bagaimana cara saya mengesampingkan perilaku ini?

Pikiran saya sejauh ini adalah:

Saya bisa mendapatkan sumber paket, mengedit deskripsi untuk memberikan nama yang berbeda dan membangun, pada dasarnya, dua paket berbeda. Saya lebih suka bekerja secara langsung dengan binari, karena tidak terlalu merepotkan.

Saya tidak perlu memuat kedua versi paket secara bersamaan (hanya diinstal di suatu tempat pada waktu yang sama). Saya mungkin dapat mengotak-atik Sys.getenv('R_HOME') untuk mengubah tempat R menginstal paket, dan kemudian .libpaths() mengubah tempat R mencarinya. Ini sepertinya rumit, jadi apakah ada yang punya ide lebih baik?


person Richie Cotton    schedule 07.06.2010    source sumber
comment
Dalam bantuan untuk update.packages disebutkan argumen installWithVers. Anda dapat mencoba memeriksanya (atau saya akan memeriksanya nanti dan mempostingnya sebagai jawaban;)).   -  person Marek    schedule 07.06.2010
comment
Dan rangkaian pesan ini mungkin bermanfaat stat.ethz.ch/pipermail/ r-help/2008-Februari/153580.html   -  person Marek    schedule 07.06.2010
comment
@Marek: Menurut file NEWS, instalasi berversi tidak digunakan lagi di R2.9.0. cran.r-project.org/src/base/NEWS   -  person Richie Cotton    schedule 07.06.2010
comment
Anda juga dapat menggunakan dua versi R yang berbeda (misalnya R 2.11 dan 2.11.1), dan membagi paket-paket yang berbeda; maka Anda dapat menjalankan kedua versi sekaligus. Saya sendiri sering melakukan ini.   -  person Shane    schedule 07.06.2010


Jawaban (3)


Anda dapat mengubah jalur perpustakaan secara selektif. Untuk transparansi penuh, jauhkan keduanya dari jalur yang biasa Anda lakukan, lalu lakukan

 library(foo, lib.loc="~/dev/foo/v1")    ## loads v1

Dan

 library(foo, lib.loc="~/dev/foo/v2")    ## loads v2

Tentu saja hal yang sama juga berlaku untuk install.packages(). Semua perintah ini memiliki sejumlah argumen, sehingga kaitan yang Anda tuju mungkin sudah ada. Jadi jangan melihat mengubah R_HOME, melainkan lihat help(install.packages) (dengan asumsi Anda menginstal dari sumber).

Tapi AFAIK Anda tidak bisa memuat paket yang sama dua kali dengan nama yang sama.

person Dirk Eddelbuettel    schedule 07.06.2010
comment
Dan untuk instalasinya bisa jika perlu lakukan lb = .libPaths(); .libPaths(c('/custom/path', lb)) - person geotheory; 05.04.2017

Bertahun-tahun telah berlalu sejak jawaban diterima yang tentu saja masih berlaku. Namun ada baiknya untuk menyebutkan beberapa opsi baru yang muncul pada saat itu:

Mengelola beberapa versi paket

Untuk mengelola beberapa versi paket pada tingkat proyek (direktori), alat packrat dapat berguna: https://rstudio.github.io/packrat/. Pendeknya

Packrat menyempurnakan direktori proyek Anda dengan menyimpan dependensi paket Anda di dalamnya, daripada mengandalkan perpustakaan R pribadi Anda yang dibagikan ke semua sesi R Anda yang lain.

Ini pada dasarnya berarti bahwa setiap proyek Anda dapat memiliki "perpustakaan pribadi" sendiri, yang diisolasi dari perpustakaan pengguna dan sistem. Jika Anda menggunakan RStudio, packrat terintegrasi dengan sangat rapi dan mudah digunakan.

Menginstal versi paket khusus

Dalam hal menginstal versi kustom sebuah paket, ada banyak cara, mungkin yang paling nyaman adalah menggunakan devtools paket, contoh:

devtools::install_version("ggplot2", version = "0.9.1")

Alternatifnya, seperti yang disarankan oleh Richie, kini ada paket yang lebih ringan bernama remotes yang merupakan hasil dari dekomposisi devtools menjadi paket yang lebih kecil, dengan penggunaan yang sangat mirip:

remotes::install_version("ggplot2", version = "0.9.1")

Informasi lebih lanjut tentang topik ini dapat ditemukan:

person Jozef    schedule 29.12.2018
comment
Dengan segala hormat atas upaya menjawab pertanyaan berusia delapan (!!) tahun, OP tidak bertanya tentang pengelolaan dependensi dan tidak tentang pemasangan nomor versi yang disematkan jadi kamu berteriak ke dalam kehampaan di sini... - person Dirk Eddelbuettel; 30.12.2018
comment
Cara saya memahami pertanyaannya adalah OP mencoba menggunakan beberapa versi dari satu paket. Untuk yang satu ini perlu melakukan 2 hal: 1) menginstal beberapa versi paket (yang saya sarankan devtools::install_version) 2) mengelola dengan aman dari mana mereka akan diinstal dan dimuat (yang saya sebutkan packrat) - yang secara efektif melakukan sesuatu yang sangat mirip ke jawaban awal Anda, hanya dengan cara yang (secara subyektif) lebih mudah. - person Jozef; 30.12.2018
comment
@Jozef Karena devtools sedang didekomposisi menjadi paket yang lebih kecil, Anda mungkin ingin menukar devtools::install_version() dengan remotes::install_version(). - person Richie Cotton; 01.01.2019
comment
Perhatikan bahwa install_version akan menimpa semua instalasi yang ada. - person jiggunjer; 14.06.2019

Saya sudah lama bekerja dengan R dan baru hari ini saya memikirkan hal ini. Idenya datang dari fakta bahwa saya mulai mencoba-coba Python dan langkah pertama yang harus saya lakukan adalah mengelola apa yang mereka (pythonista) sebut sebagai lingkungan Virtual. Mereka bahkan memiliki alat khusus untuk tugas yang tampaknya penting ini. Saya memberi tahu diri saya lebih banyak tentang aspek ini dan mengapa mereka menganggapnya begitu serius. Saya akhirnya menyadari bahwa ini adalah cara yang rapi dan penting untuk mengelola berbagai proyek dengan ketergantungan yang saling bertentangan. Saya ingin tahu mengapa R tidak memiliki fitur ini dan menemukan bahwa sebenarnya konsep lingkungan ada di R tetapi tidak diperkenalkan kepada pemula seperti di Python. Jadi, Anda perlu memeriksa dokumentasi tentang ini dan itu akan menyelesaikan masalah Anda. Maaf karena bertele-tele tapi saya pikir itu akan membantu.

person Faustin Gashakamba    schedule 03.03.2021