Neue Entwicklungen in R

Ralf Stubner

Was ist R? Und was nicht?

  • R ist eine Programmiersprache für Statistik, Datenanalyse, Graphik und vieles mehr.

    • Funktional & objektorientiert.

    • Freie Software unter GNU GPL.

  • R ist nicht CRAN!

    • Aber CRAN ist die zentrale Stelle für R Pakete zur Erweiterung der Funktionalität.
    • Die meisten neuen Entwicklungen finden hier statt.
  • R wird nicht von RStudio erstellt!

    • Wir stellen die gleichnamige IDE und viele R Pakete als FOSS bereit.
    • Wir vertreiben Software für den Einsatz in Unternehmen.
  • R jetzt auch im Browser: webr.gwstagg.co.uk (experimentell)

R Core Team (2022)

Native Pipe in R

  • Pipes sind ein Entwurfsmuster für die Verarbeitung von Daten (pipes and filters)

  • Pipes in R wurden durch magrittr populär

  • Seit R 4.1 gibt es eine native pipe in R

  • x |> f(y) |> g(z) ist äquivalent zu g(f(x, y), z)

library(nycflights13)
library(dplyr)

flights |>
  filter(dest == "SFO") |> 
  group_by(year, month, day) |> 
  summarize(
    arr_delay = mean(arr_delay, na.rm = TRUE) 
  ) |>
  head()
year month day arr_delay
2013 1 1 -3.129032
2013 1 2 -4.060606
2013 1 3 -18.419355
2013 1 4 -22.032258
2013 1 5 4.480000
2013 1 6 -17.566667

Unterschiede zu magrittr

Funktion vs. Funktionsaufruf:

library(palmerpenguins)

penguins %>% 
  head %>% 
  nrow
[1] 6
rnorm(100) %>% 
  {c(min(.), mean(.), max(.))}
[1] -2.3796097  0.1987904  3.2755954
library(palmerpenguins)

penguins |> 
  head() |> 
  nrow()
[1] 6
rnorm(100) |> 
  (function(x) {c(min(x), mean(x), max(x))})()
[1] -2.11976046  0.05283308  2.74189076

Platzhaltervariable nur mit Namen (ab R 4.2):

"Ceci n'est pas une pipe" %>% 
  gsub("une", "un", .)
[1] "Ceci n'est pas un pipe"
"Ceci n'est pas une pipe" |> 
  gsub("une", "un", x=_)
[1] "Ceci n'est pas un pipe"

Weitere Neuerungen

  • Anonyme Funktionen lassen sich seit R 4.1 etwas kompakter formulieren: Statt function(x) {...} nun \(x) {...}:
sapply(penguins, function(x) length(unique(x)))
          species            island    bill_length_mm     bill_depth_mm 
                3                 3               165                81 
flipper_length_mm       body_mass_g               sex              year 
               56                95                 3                 3 
sapply(penguins, \(x) length(unique(x)))
          species            island    bill_length_mm     bill_depth_mm 
                3                 3               165                81 
flipper_length_mm       body_mass_g               sex              year 
               56                95                 3                 3 
rnorm(100) |> (\(x) {c(min(x), mean(x), max(x))})()
[1] -2.44122396 -0.03836914  2.73202002
  • Unterstützung für UTF-8 unter Windows seit R 4.2.

  • Seit R 4.0 gilt stringsAsFactors = FALSE.

Data science

  • Produktion nicht vergessen!

Maschinelles Lernen

tidymodels1

Eine Sammlung von R Paketen für Modellierung und Maschinelles Lernen. Philosophie, Grammatik und Datenstrukturen entsprechen dem tidyverse.

vetiver2

Trainierte Modelle effizient versionieren, als API produktiv setzen und überwachen.

Produktion & Kommunikation

renv1

Reproduzierbare Umgebungen für R Projekte. Welche R Pakete in welcher Version wurden benutzt?

quarto2

Publikationssystem für wissenschaftliche und technische Texte. Verbindet Text mit Code und dessen Output für Dokumente, Bücher, Webseiten, Blogs, Folien und vieles mehr.

shinyuieditor3

Ein graphisches Werkzeug um das UI einer Shiny-Anwendung zu erstellen. (alpha!)

Wo geht es los? Wo geht es weiter?

Finding Your Way To R

https://education.rstudio.com/learn/

What They Forgot to Teach You About R

https://rstats.wtf/

Happy Git with R

https://happygitwithr.com/

Viele Open Access Bücher

z.B. unter https://bookdown.org/

Ansprechpartner

Ralf Stubner
Solutions Engineer
RStudio, PBC

ralf@rstudio.com

info@stubner.me

https://stubner.me

References

Kuhn, Max, und Hadley Wickham. 2022. tidymodels: Easily Install and Load the Tidymodels Packages.
Quarto. 2022. https://quarto.org/.
R Core Team. 2022. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.
Silge, Julia. 2022. vetiver: Version, Share, Deploy, and Monitor Models.
Strayer, Nick. 2022. shinyuieditor: Build and Modify your Shiny UI, visually. https://rstudio.github.io/shinyuieditor/.
Ushey, Kevin. 2022. renv: Project Environments. https://rstudio.github.io/renv/.
Wickham, Hadley, und Garrett Grolemund. 2016. R for data science: import, tidy, transform, visualize, and model data. First edition. Sebastopol, CA: O’Reilly. https://r4ds.had.co.nz/.