Cómo ejecutar R 4.0 en Docker y 3 nuevas funciones geniales de R 4.0

Hay algunos cambios y actualizaciones interesantes en R 4.0. Aquí echaré un vistazo a tres de ellos. Además, le daré instrucciones paso a paso sobre la instalación de R 4.0 para que no interfiera con su instalación de R existente, ejecutando R con Docker.

Docker es una plataforma para crear "contenedores": entornos aislados y completamente autónomos en su computadora. Piense en ellos como un mini sistema en su sistema. Incluyen su propio sistema operativo, y luego todo lo que quieras agregar: software de aplicación, scripts, datos, etc. Los contenedores son útiles para muchas cosas, pero aquí me enfocaré en solo una: probar nuevas versiones de software. sin estropear su configuración local actual.

Ejecutar R 4.0 y la última versión preliminar de RStudio en un contenedor Docker es bastante fácil. Si no desea seguir la parte de Docker de este tutorial, y solo desea ver las novedades de R, desplácese hacia abajo hasta la sección "Tres nuevas funciones de R 4.0".

Ejecute R 4.0 en un contenedor Docker

Si le gustaría seguir a lo largo, instale escritorio acoplable en su sistema si no lo tiene: Cabeza de //www.docker.com/products/docker-desktop y descargar la versión de escritorio adecuado para su ordenador (Windows, Mac o Linux). Luego, ejecútalo. Debería ver un ícono de ballena Docker ejecutándose en algún lugar de su sistema.

Sharon Machlis,

A continuación, necesitamos una imagen de Docker para R 4.0. Puede pensar en una imagen de Docker como un conjunto de instrucciones para crear un contenedor con software específico incluido. Gracias a Adelmo Filho (un científico de datos en Brasil) y al proyecto Rocker R Docker, quienes proporcionan algunas imágenes Docker muy útiles. Modifiqué sus imágenes de Docker solo ligeramente para hacer la que usé en este tutorial.

Aquí está la sintaxis para ejecutar una imagen de Docker en su propio sistema para crear un contenedor.

docker run --rm -p 8787: 8787 -v / ruta / a / local / dir: / home / rstudio / newdir nombre de usuario / docker_image_name: image_tag

dockerasí es como debe iniciar cualquier comando de Docker. runsignifica que quiero ejecutar una imagen y crear un contenedor a partir de esa imagen. La --rmbandera significa retirar el contenedor cuando esté terminado. No tiene que incluir --rm; pero si ejecuta muchos contenedores y no los elimina, comenzarán a ocupar mucho espacio en el disco. El -p 8787:8787sólo es necesaria para las imágenes que tienen que ejecutarse en un puerto del sistema, lo que rstudio (como lo hace brillante si va a incluir que algún día). El comando anterior especifica el puerto 8787, que es el predeterminado habitual de RStudio.

El -vcrea un volumen. ¿Recuerda cuando dije que los contenedores Docker son autónomos y aislados? Eso significa aislado . De forma predeterminada, el contenedor no puede acceder a nada fuera de él y el resto de su sistema no puede acceder a nada dentro del contenedor. Pero si configura un volumen, puede vincular una carpeta local con una carpeta dentro del contenedor. Luego se sincronizan automáticamente. La sintaxis:

-v ruta / al / directorio / local: / ruta / al / contenedor / directorio

Con RStudio, generalmente lo usa /home/rstudio/name_of_new_directorypara el directorio del contenedor.

Al final del docker runcomando está el nombre de la imagen que desea ejecutar. Mi imagen, como muchas imágenes de Docker, se almacena en Docker Hub, un servicio configurado por Docker para compartir imágenes. Al igual que con GitHub, accedes a un proyecto especificando un username/reponame. En este caso también suele agregar :the_tag, lo que ayuda si hay diferentes versiones de la misma imagen.

A continuación se muestra el código que puede modificar para ejecutar mi imagen con R 4.0 y la última versión preliminar de RStudio en su sistema. Asegúrese de sustituir una ruta a uno de sus directorios por / Users / smachlis / Document / MoreWithR.  Puede ejecutar esto en una ventana de terminal de Mac o en el símbolo del sistema de Windows o en una ventana de PowerShell.

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

Cuando ejecute este comando por primera vez, Docker deberá descargar la imagen de Docker Hub, por lo que puede llevar un tiempo. Después de eso, a menos que elimine su copia local de la imagen, debería ser mucho más rápido.

Ahora, cuando abra localhost:8787en un navegador, debería ver RStudio.

Sharon Machlis,

El nombre de usuario y la contraseña predeterminados son rstudio, lo que, por supuesto, sería terrible si estuviera ejecutando esto en la nube. Pero creo que está bien en mi máquina local, ya que normalmente no tengo ninguna contraseña en mi escritorio RStudio habitual.

Si verifica la versión R en su R / RStudio en contenedor, verá que es la versión 4.0. RStudio debería ser la versión 1.3.947, la última versión preliminar en el momento en que se publicó este artículo por primera vez. Ambas son versiones diferentes de las instaladas en mi máquina local.

Tres nuevas características de la R 4.0

Así que ahora veamos algunas características nuevas de R 4.0. 

New stringsAsFactors predeterminado

En el siguiente código, estoy creando un marco de datos simple con información sobre cuatro ciudades y luego verificando la estructura.

Ciudad <- c ("Nueva York", "San Francisco", "Boston", "Seattle") Estado <- c ("NY", "CA", "MA", "Seattle") PopDensity <- c (26403 , 18838, 13841, 7962) densidades <- data.frame (Ciudad, Estado, PopDensity) str (densidades) 'data.frame': 4 obs. de 3 variables: $ Ciudad: chr "Nueva York" "San Francisco" "Boston" "Seattle" $ Estado: chr "NY" "CA" "MA" "Seattle" $ PopDensity: num 26403 18838 13841 7962

Notice anything unexpected? City and State are character strings, even though I didn’t specify stringsAsFactors = FALSE. Yes, at long last, the R data.frame default is stringsAsFactors = FALSE. If I run the same code in an older version of R, City and State will be factors.

New color palettes and functions

Next, let’s look at a new built-in function in R 4.0: palette.pals(). This shows some built-in color palettes.

 palette.pals() [1] "R3" "R4" "ggplot2" "Okabe-Ito" [5] "Accent" "Dark 2" "Paired" "Pastel 1" [9] "Pastel 2" "Set 1" "Set 2" "Set 3" [13] "Tableau 10" "Classic Tableau" "Polychrome 36" "Alphabet" 

Another new function, palette.colors(), gives info about a built-in palette.

 palette.colors (palette = "Tableau 10") azul naranja rojo verde claro verde amarillo violeta "# 4E79A7" "# F28E2B" "# E15759" "# 76B7B2" "# 59A14F" "# EDC948" "# B07AA1" rosa marrón gris claro " # FF9DA7 "" # 9C755F "" # BAB0AC " 

Si luego ejecuta la show_col()función del paquete de escalas en los resultados, obtendrá una bonita visualización en color de la paleta.

scale :: show_col (palette.colors (palette = "Tableau 10"))

Sharon Machlis,

Hice una pequeña función combinando las dos que podrían ser útiles para ver algunas de las paletas integradas en una sola línea de código:

display_built_in_palette <- función (my_palette) {

escalas :: show_col (palette.colors (palette = 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 

Sin la r"()"función especial , eso \nse lee como un salto de línea y no se muestra.

 cadena3 <- "Aquí hay una barra invertida n \ n" cat (cadena3) Aquí hay una barra invertida n 

Antes de esto en base R, necesitabas escapar de esa barra invertida con una segunda barra invertida. 

 string4 <- "Usual escaped \\ n" cat (string4) Usualmente escapado \ n 

Eso no es gran cosa en este ejemplo, pero puede complicarse cuando trabaja en algo como expresiones regulares complejas.

Hay muchas más novedades en la R 4.0. Puede consultar todos los detalles en el sitio web del proyecto R. 

Para obtener más información sobre el uso de Docker con R, consulte el breve pero excelente tutorial de R Docker de rOpenSci Labs.

¡Y para obtener más consejos de R, dirígete a la página Haz más con R!