Cara menjalankan R 4.0 di Docker - dan 3 ciri R 4.0 baru yang keren

Terdapat beberapa perubahan dan kemas kini yang menarik di R 4.0. Di sini saya akan melihat tiga daripadanya. Plus saya akan memberi anda arahan langkah demi langkah untuk memasang R 4.0 supaya tidak mengganggu pemasangan R anda yang ada - dengan menjalankan R dengan Docker.

Docker adalah platform untuk membuat "kontena" - persekitaran terpencil yang sepenuhnya serba lengkap di komputer anda. Fikirkan mereka seperti sistem mini pada sistem anda. Mereka termasuk sistem operasi mereka sendiri, dan kemudian apa sahaja yang ingin anda tambahkan - perisian aplikasi, skrip, data, dan lain-lain. Kontainer berguna untuk banyak perkara, tetapi di sini saya akan memfokuskan hanya pada satu: menguji versi perisian baru tanpa merosakkan persediaan tempatan anda sekarang.

Menjalankan R 4.0 dan rilis pratonton terbaru RStudio dalam bekas Docker cukup mudah. Sekiranya anda tidak mahu mengikuti bahagian Docker dari tutorial ini, dan anda hanya ingin melihat yang baru di R, tatal ke bawah ke bahagian "Tiga ciri R 4.0 baru".

Jalankan R 4.0 dalam bekas Docker

Jika anda akan suka untuk ikut bersama-sama, memasang desktop buruh pelabuhan pada sistem anda jika anda tidak sudah mempunyai ia: Kepala ke //www.docker.com/products/docker-desktop dan memuat turun versi desktop yang betul untuk komputer anda (Windows, Mac, atau Linux). Kemudian, lancarkannya. Anda akan melihat ikon Docker paus berjalan di suatu tempat di sistem anda.

Sharon Machlis,

Seterusnya, kita memerlukan gambar Docker untuk R 4.0. Anda boleh menganggap gambar Docker sebagai satu set arahan untuk membuat wadah dengan perisian tertentu disertakan. Terima kasih kepada Adelmo Filho (seorang saintis data di Brazil) dan projek Rocker R Docker, yang memberikan beberapa gambar Docker yang sangat berguna. Saya mengubah sedikit gambar Docker mereka untuk menjadikan gambar yang saya gunakan dalam tutorial ini.

Berikut adalah sintaks untuk menjalankan imej Docker pada sistem anda sendiri untuk membuat wadah.

run docker --rm -p 8787: 8787 -v / path / to / local / dir: / home / rstudio / newdir username / docker_image_name: image_tag

dockeradalah bagaimana anda perlu memulakan sebarang arahan Docker. runbermaksud saya mahu menjalankan gambar dan membuat wadah dari gambar itu. The --rmcara bendera keluarkan bekas apabila ia selesai. Anda tidak perlu memasukkan --rm; tetapi jika anda menjalankan banyak bekas dan tidak menghapusnya, mereka akan mula mengambil banyak ruang cakera. Ini -p 8787:8787hanya diperlukan untuk gambar yang harus dijalankan pada port sistem, yang dilakukan oleh RStudio (seperti yang dilakukan Shiny jika anda merancang untuk memasukkannya suatu hari nanti). Perintah di atas menentukan port 8787, yang merupakan default biasa RStudio.

Yang -vmewujudkan jumlah yang. Masih ingat ketika saya mengatakan bekas Docker berisi diri dan terpencil? Itu bermaksud terpencil . Secara lalai, kontena tidak dapat mengakses sesuatu di luarnya, dan sistem anda yang lain tidak dapat mengakses apa-apa di dalam bekas. Tetapi jika anda menetapkan kelantangan, anda boleh menghubungkan folder tempatan dengan folder di dalam bekas. Kemudian mereka menyegerakkan secara automatik. Sintaks:

-v path / ke / local / direktori: / path / to / container / direktori

Dengan RStudio, anda biasanya menggunakan /home/rstudio/name_of_new_directorydirektori kontena.

Pada akhir docker runarahan adalah nama gambar yang ingin anda jalankan. Imej saya, seperti banyak gambar Docker, disimpan di Docker Hub, perkhidmatan yang disediakan oleh Docker untuk berkongsi gambar. Seperti dengan GitHub, anda mengakses projek dengan menentukan a username/reponame. Dalam kes ini, anda juga biasanya menambah :the_tag, yang membantu jika terdapat versi yang berbeza dari gambar yang sama.

Di bawah ini adalah kod yang boleh anda ubah untuk menjalankan gambar saya dengan R 4.0 dan rilis pratonton terbaru RStudio pada sistem anda. Pastikan untuk menggantikan jalan ke salah satu direktori anda untuk / Users / smachlis / Document / MoreWithR.  Anda boleh menjalankannya di tetingkap terminal Mac atau command prompt Windows atau tetingkap PowerShell.

run docker --rm -p 8787: 8787 -v / Users / smachlis / Documents / MoreWithR: / home / rstudio / morewithr sharon000 / my_rstudio_image: version1

Semasa anda menjalankan perintah ini untuk pertama kalinya, Docker perlu memuat turun gambar dari Docker Hub, jadi mungkin perlu beberapa lama. Selepas itu, melainkan jika anda memadam salinan gambar tempatan anda, gambar itu akan lebih pantas.

Sekarang apabila anda membuka localhost:8787dalam penyemak imbas, anda akan melihat RStudio.

Sharon Machlis,

Nama pengguna dan kata laluan lalai adalah rstudio, yang tentunya akan mengerikan jika anda menjalankannya di awan. Tetapi saya fikir denda itu ini pada mesin tempatan saya, kerana saya biasanya tidak mempunyai apa-apa kata laluan pada desktop RStudio tetap saya.

Sekiranya anda menyemak versi R di R / RStudio dalam bentuk anda, anda akan melihat versi 4.0. RStudio harus versi 1.3.947, rilis pratonton terbaru pada saat artikel ini pertama kali diterbitkan. Kedua-duanya adalah versi berbeza dari yang dipasang pada mesin tempatan saya.

Tiga ciri R 4.0 baru

Jadi sekarang mari kita lihat beberapa ciri baru R 4.0. 

Rentetan baruAsFactors lalai

Dalam kod di bawah, saya membuat kerangka data ringkas dengan maklumat mengenai empat bandar dan kemudian memeriksa strukturnya.

Bandar <- c ("New York", "San Francisco", "Boston", "Seattle") Negeri <- c ("NY", "CA", "MA", "Seattle") PopDensity <- c (26403 , 18838, 13841, 7962) kepadatan <- data.frame (City, State, PopDensity) str (kepadatan) 'data.frame': 4 obs. daripada 3 pemboleh ubah: $ Bandar: chr "New York" "San Francisco" "Boston" "Seattle" $ Negeri: chr "NY" "CA" "MA" "Seattle" $ PopDensity: num 26403 18838 13841 7962

Perhatikan sesuatu yang tidak dijangka? Bandar dan Negeri adalah rentetan watak, walaupun stringsAsFactors = FALSE.lama-lama saya tidak menyatakan Ya, akhirnya data R.frame R adalah stringsAsFactors = FALSE. Sekiranya saya menjalankan kod yang sama dalam versi R yang lebih lama, Kota dan Negeri akan menjadi faktor.

Palet dan fungsi warna baru

Seterusnya, melihat let di yang baru terbina dalam fungsi R 4.0: palette.pals(). Ini menunjukkan beberapa palet warna terbina dalam.

 palette.pals () [1] "R3" "R4" "ggplot2" "Okabe-Ito" [5] "Aksen" "Gelap 2" "Berpasangan" "Pastel 1" [9] "Pastel 2" "Set 1" "Set 2" "Set 3" [13] "Tableau 10" "Tableau Klasik" "Polychrome 36" "Alphabet" 

Fungsi baru yang lain palette.colors(), memberikan maklumat mengenai palet terbina dalam.

 palette.colors (palette = "Tableau 10") blue orange red lightteal green yellow purple "# 4E79A7" "# F28E2B" "# E15759" "# 76B7B2" "# 59A14F" "# EDC948" "# B07AA1" lightgray coklat merah jambu " # FF9DA7 "" # 9C755F "" # BAB0AC " 

Sekiranya anda kemudian menjalankan show_col()fungsi paket skala pada hasilnya, anda akan mendapat paparan warna yang bagus dari palet.

skala :: show_col (palette.colors (palet = "Tableau 10"))

Sharon Machlis,

Saya membuat fungsi kecil menggabungkan dua yang boleh berguna untuk melihat beberapa palet terbina dalam satu baris kod:

display_built_in_palette <- fungsi (my_palette) {

skala :: show_col (palette.colors (palet = my_palette))

}

display_built_in_palette ("Okabe-Ito")

Sharon Machlis,

None of this code works in earlier versions of R, since only scales::show_col() is available before R 4.0.

Escaping characters within strings

Finally, let’s look at a new function that makes it easier to include characters that usually need to be escaped in strings. 

The syntax is r"(my string here)". Here is one example:

string1 <- r"("I no longer need to escape these " double quotes inside a quote," they said.)"

That string includes an un-escaped quotation mark inside a pair of double quotes. If I display that string, I get this:

 > cat(string1) "I no longer need to escape these " double quotes inside a quote," they said. 

I can also print a literal \n inside the new function.

 string2 <- r"(Here is a backslash n \n)" cat(string2) Here is a backslash n \n 

Tanpa r"()"fungsi khas , \nia dibaca sebagai pemecahan garis dan tidak dipaparkan.

 string3 <- "Inilah garis miring terbalik n \ n" kucing (string3) Berikut adalah garis miring terbalik n 

Sebelum ini di pangkalan R, anda perlu melarikan diri dari garis miring terbalik dengan garis miring terbalik kedua. 

 string4 <- "kucing biasa \\ n \" (string4) Biasa melarikan diri \ n 

Itu bukan masalah besar dalam contoh ini, tetapi boleh menjadi rumit ketika anda mengerjakan sesuatu seperti ungkapan biasa yang kompleks.

Terdapat banyak lagi yang baru di R 4.0. Anda boleh melihat semua butiran di laman web projek R. 

Untuk lebih lanjut mengenai penggunaan Docker with R, lihat Tutorial R Docker pendek tetapi sangat baik rOpenSci Labs.

Dan untuk lebih banyak petua R, pergi ke halaman Do More With R!