Προγραμματισμός

Πώς να εκτελέσετε το R 4.0 στο Docker - και 3 δροσερές νέες δυνατότητες R 4.0

Υπάρχουν μερικές ενδιαφέρουσες αλλαγές και ενημερώσεις στο R 4.0. Εδώ θα ρίξω μια ματιά σε τρία από αυτά. Επιπλέον, θα σας δώσω αναλυτικές οδηγίες για την εγκατάσταση του R 4.0, ώστε να μην παρεμβαίνει στην υπάρχουσα εγκατάσταση R σας - εκτελώντας το R με το Docker.

Το Docker είναι μια πλατφόρμα για τη δημιουργία «εμπορευματοκιβωτίων» - εντελώς αυτόνομα, απομονωμένα περιβάλλοντα στον υπολογιστή σας. Σκεφτείτε τα σαν ένα μίνι σύστημα στο σύστημά σας. Περιλαμβάνουν το δικό τους λειτουργικό σύστημα και έπειτα οτιδήποτε θέλετε να προσθέσετε σε αυτό - λογισμικό εφαρμογών, σενάρια, δεδομένα κ.λπ. Τα κοντέινερ είναι χρήσιμα για πολλά πράγματα, αλλά εδώ θα επικεντρωθώ σε ένα μόνο: δοκιμή νέων εκδόσεων λογισμικού χωρίς να ανατρέψετε την τρέχουσα τοπική σας εγκατάσταση.

Η εκτέλεση του R 4.0 και η τελευταία έκδοση προεπισκόπησης του RStudio σε ένα κοντέινερ Docker είναι αρκετά εύκολη. Εάν δεν θέλετε να ακολουθήσετε το Docker μέρος αυτού του σεμιναρίου και θέλετε απλώς να δείτε τι νέο υπάρχει στο R, μετακινηθείτε προς τα κάτω στην ενότητα "Τρεις νέες λειτουργίες R 4.0".

Εκτελέστε το R 4.0 σε ένα κοντέινερ Docker

Αν εσύ θα θέλετε να ακολουθήσετε, εγκαταστήστε το Docker στην επιφάνεια εργασίας σας εάν δεν το έχετε ήδη: Μεταβείτε στη διεύθυνση //www.docker.com/products/docker-desktop και κάντε λήψη της σωστής έκδοσης για τον υπολογιστή σας (Windows, Mac ή Linux). Στη συνέχεια, ξεκινήστε το. Θα πρέπει να δείτε ένα εικονίδιο φαλαινών Docker να τρέχει κάπου στο σύστημά σας.

Sharon Machlis,

Στη συνέχεια, χρειαζόμαστε μια εικόνα Docker για R 4.0. Μπορείτε να σκεφτείτε μια εικόνα του Docker ως ένα σύνολο οδηγιών για τη δημιουργία ενός κοντέινερ με συγκεκριμένο λογισμικό. Χάρη στον Adelmo Filho (επιστήμονας δεδομένων στη Βραζιλία) και το έργο Rocker R Docker, που παρέχουν μερικές πολύ χρήσιμες εικόνες του Docker. Τροποποίησα τις εικόνες Docker τους λίγο για να φτιάξω αυτήν που χρησιμοποίησα σε αυτό το σεμινάριο.

Εδώ είναι η σύνταξη του τρέξιμο μια εικόνα Docker στο δικό σας σύστημα για να δημιουργήσετε ένα κοντέινερ.

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

λιμενεργάτης είναι πώς πρέπει να ξεκινήσετε οποιαδήποτε εντολή Docker. τρέξιμο σημαίνει ότι θέλω να τρέξω μια εικόνα και να δημιουργήσω ένα κοντέινερ από αυτήν την εικόνα. ο - Ρρμ flag σημαίνει αφαίρεση του κοντέινερ όταν τελειώσει. Δεν το κάνεις έχω να συμπεριλάβει - Ρρμ; αλλά αν εκτελέσετε πολλά κοντέινερ και δεν τα διαγράψετε, θα αρχίσουν να καταλαμβάνουν πολύ χώρο στο δίσκο. ο -p 8787: 8787 απαιτείται μόνο για εικόνες που πρέπει να εκτελούνται σε μια θύρα συστήματος, την οποία κάνει το RStudio (όπως και το Shiny αν σκοπεύετε να το συμπεριλάβετε κάποια μέρα). Η παραπάνω εντολή καθορίζει τη θύρα 8787, η οποία είναι η συνήθης προεπιλογή του RStudio.

ο δημιουργεί έναν τόμο. Θυμάστε όταν είπα ότι τα δοχεία Docker είναι αυτόνομα και απομονωμένα; Αυτό σημαίνει απομονωμένος. Από προεπιλογή, το κοντέινερ δεν μπορεί να έχει πρόσβαση Οτιδήποτε έξω από αυτό και το υπόλοιπο σύστημά σας δεν μπορεί να έχει πρόσβαση σε τίποτα μέσα το δοχείο. Αλλά αν ρυθμίσετε έναν τόμο, μπορείτε να συνδέσετε έναν τοπικό φάκελο με έναν φάκελο μέσα στο κοντέινερ. Στη συνέχεια συγχρονίζονται αυτόματα. Η σύνταξη:

-v διαδρομή / προς / τοπικό / κατάλογο: / διαδρομή / προς / κοντέινερ / κατάλογο

Με το RStudio, συνήθως χρησιμοποιείτε / home / rstudio / name_of_new_directory για τον κατάλογο κοντέινερ.

Στο τέλος του τρέξιμο Η εντολή είναι το όνομα της εικόνας που θέλετε να εκτελέσετε. Η εικόνα μου, όπως πολλές εικόνες του Docker, αποθηκεύεται στο Docker Hub, μια υπηρεσία που έχει συσταθεί από το Docker για κοινή χρήση εικόνων. Όπως με το GitHub, έχετε πρόσβαση σε ένα έργο καθορίζοντας ένα όνομα χρήστη / επωνυμία. Σε αυτήν την περίπτωση συνήθως προσθέτετε επίσης : η ετικέτα, το οποίο βοηθά αν υπάρχουν διαφορετικές εκδόσεις της ίδιας εικόνας.

Παρακάτω είναι ο κωδικός που μπορείτε να τροποποιήσετε για να εκτελέσετε την εικόνα μου με το R 4.0 και την τελευταία έκδοση προεπισκόπησης του RStudio στο σύστημά σας. Φροντίστε να αντικαταστήσετε μια διαδρομή σε μία από αυτές τα δικα σου καταλόγους για / Χρήστες / smachlis / Έγγραφο / ΠερισσότεραWithR. Μπορείτε να το εκτελέσετε σε παράθυρο τερματικού Mac ή γραμμή εντολών Windows ή παράθυρο PowerShell.

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

Όταν εκτελείτε αυτήν την εντολή για πρώτη φορά, το Docker θα πρέπει να κατεβάσει την εικόνα από το Docker Hub, οπότε μπορεί να χρειαστεί λίγο. Μετά από αυτό, εκτός εάν διαγράψετε το τοπικό αντίγραφο της εικόνας, θα πρέπει να είναι πολύ πιο γρήγορο.

Τώρα όταν ανοίγετε localhost: 8787 σε ένα πρόγραμμα περιήγησης, θα πρέπει να δείτε το RStudio.

Sharon Machlis,

Το προεπιλεγμένο όνομα χρήστη και ο κωδικός πρόσβασης είναι και τα δύο rstudio, τα οποία φυσικά θα ήταν τρομερά αν το εκτελούσατε στο cloud. Αλλά νομίζω ότι είναι εντάξει στο τοπικό μου μηχάνημα, αφού συνήθως δεν το έχω όποιος κωδικός πρόσβασης στην κανονική επιφάνεια εργασίας RStudio.

Εάν ελέγξετε την έκδοση R στο R / RStudio σε κοντέινερ, θα δείτε ότι είναι η έκδοση 4.0. Το RStudio θα πρέπει να είναι η έκδοση 1.3.947, η τελευταία έκδοση προεπισκόπησης κατά την πρώτη δημοσίευση αυτού του άρθρου. Αυτές είναι και οι δύο διαφορετικές εκδόσεις από αυτές που είναι εγκατεστημένες στον τοπικό υπολογιστή μου.

Τρεις νέες δυνατότητες R 4.0

Ας δούμε λοιπόν μερικές νέες δυνατότητες του R 4.0.

Προεπιλογή νέας συμβολοσειράςAsFactors

Στον παρακάτω κώδικα, δημιουργώ ένα απλό πλαίσιο δεδομένων με πληροφορίες για τέσσερις πόλεις και έπειτα ελέγχω τη δομή.

 Πόλη <- c ("Νέα Υόρκη", "Σαν Φρανσίσκο", "Βοστώνη", "Σιάτλ") Πολιτεία <- c ("NY", "CA", "MA", "Seattle") PopDensity <- c (26403 , 18838, 13841, 7962) πυκνότητες <- data.frame (Πόλη, Πολιτεία, PopDensity) str (πυκνότητες) 'data.frame': 4 obs. από 3 μεταβλητές: $ Πόλη: chr "Νέα Υόρκη" "Σαν Φρανσίσκο" "Βοστώνη" "Σιάτλ" $ Πολιτεία: chr "NY" "CA" "MA" "Seattle" $ PopDensity: num 26403 18838 13841 7962 

Παρατηρείτε κάτι απρόσμενο; Η πόλη και η πολιτεία είναι χορδές χαρακτήρων, παρόλο που δεν έχω προσδιορίσει stringsAsFactors = ΛΑΘΟΣ. Ναι, επιτέλους, η προεπιλογή R data.frame είναι stringsAsFactors = ΛΑΘΟΣ. Εάν εκτελέσω τον ίδιο κωδικό σε μια παλαιότερη έκδοση του R, η πόλη και η πολιτεία θα είναι παράγοντες.

Νέες παλέτες χρωμάτων και λειτουργίες

Στη συνέχεια, ας δούμε μια νέα ενσωματωμένη λειτουργία στο R 4.0: palette.pals (). Αυτό δείχνει μερικές ενσωματωμένες παλέτες χρωμάτων.

 palette.pals () [1] "R3" "R4" "ggplot2" "Okabe-Ito" [5] "Accent" "Dark 2" "Paired" "Pastel 1" [9] "Pastel 2" "Set 1" "Σετ 2" "Σετ 3" [13] "Πίνακας 10" "Κλασικό τραπέζι" "Πολύχρωμα 36" "Αλφάβητο" 

Μια άλλη νέα λειτουργία, palette.colors (), παρέχει πληροφορίες σχετικά με μια ενσωματωμένη παλέτα.

 palette.colors (palette = "Tableau 10") μπλε πορτοκαλί κόκκινο ελαφρύ πράσινο κίτρινο μωβ "# 4E79A7" "# F28E2B" "# E15759" "# 76B7B2" "# 59A14F" "# EDC948" "# B07AA1" ροζ καφέ ανοιχτό γκρι " # FF9DA7 "" # 9C755F "" # BAB0AC " 

Εάν εκτελέσετε τότε το πακέτο ζυγών show_col () Λειτουργεί στα αποτελέσματα, έχετε μια ωραία έγχρωμη οθόνη της παλέτας.

κλίμακες :: show_col (palette.colors (palette = "Tableau 10"))

Sharon Machlis,

Έκανα μια μικρή λειτουργία που συνδυάζει τις δύο που θα μπορούσαν να είναι χρήσιμες για την εξέταση ορισμένων από τις ενσωματωμένες παλέτες σε μία μόνο γραμμή κώδικα:

display_built_in_palette <- λειτουργία (my_palette) {

κλίμακες :: show_col (palette.colors (palette = my_palette))

}

display_built_in_palette ("Okabe-Ito")

Sharon Machlis,

Κανένας από αυτόν τον κώδικα δεν λειτουργεί σε παλαιότερες εκδόσεις του R, αφού μόνο κλίμακες :: show_col () είναι διαθέσιμο πριν από το R 4.0.

Διαφυγή χαρακτήρων εντός συμβολοσειρών

Τέλος, ας δούμε μια νέα λειτουργία που διευκολύνει τη συμπερίληψη χαρακτήρων που συνήθως πρέπει να διαφεύγουν σε χορδές.

Η σύνταξη είναι r "(η συμβολοσειρά μου εδώ)". Εδώ είναι ένα παράδειγμα:

string1 <- r "(" Δεν χρειάζεται πλέον να ξεφύγω από αυτά τα "διπλά εισαγωγικά μέσα σε ένα απόσπασμα", είπαν.) "

Αυτή η συμβολοσειρά περιλαμβάνει ένα εισαγωγικό χωρίς διαφυγή μέσα σε ένα ζευγάρι διπλών εισαγωγικών. Εάν εμφανίσω αυτήν τη συμβολοσειρά, λαμβάνω αυτό:

 > cat (string1) "Δεν χρειάζεται πλέον να ξεφύγω από αυτά τα" διπλά εισαγωγικά μέσα σε ένα απόσπασμα ", είπαν. 

Μπορώ επίσης να εκτυπώσω ένα γράμμα \ n μέσα στη νέα λειτουργία.

 string2 <- r "(Εδώ είναι μια ανάστροφη κάθετος n \ n)" cat (string2) Εδώ είναι μια ανάστροφη κάθετος n \ n 

Χωρίς το ειδικό r "()" λειτουργία, αυτό \ n διαβάζεται ως αλλαγή γραμμής και δεν εμφανίζεται.

 string3 <- "Εδώ είναι μια ανάστροφη κάθετη n \ n" γάτα (string3) Εδώ είναι μια ανάστροφη κάθετος n 

Πριν από αυτό στη βάση R, έπρεπε να αποφύγετε αυτήν την ανάστροφη κάθετη με μια δεύτερη ανάστροφη κάθετο.

 string4 <- "συνηθισμένη διαφυγή γάτα (string4) Συνήθη διαφυγή \ n 

Αυτό δεν είναι μεγάλη υπόθεση σε αυτό το παράδειγμα, αλλά μπορεί να γίνει περίπλοκο όταν εργάζεστε σε κάτι όπως περίπλοκες τυπικές εκφράσεις.

Υπάρχουν πολύ περισσότερα νέα στο R 4.0. Μπορείτε να δείτε όλες τις λεπτομέρειες στον ιστότοπο του έργου R.

Για περισσότερα σχετικά με τη χρήση του Docker with R, ρίξτε μια ματιά στο σύντομο αλλά εξαιρετικό R Docker Tutorial του rOpenSci Labs.

Και για περισσότερες συμβουλές R, μεταβείτε στη σελίδα Do More With R!