Übung vom 19.10.2026

Aufruf von Funktionen

log()   # Fehler
Error in `log()`:
! Argument "x" fehlt (ohne Standardwert)
log(16)
[1] 2.772589
log(x = 16)
[1] 2.772589
log(x = 16, base = 2)
[1] 4
log(16, 2)
[1] 4

Beim Aufruf der Funktionen müssen

  • alle Argumente, denen kein default-Wert zugewiesen ist, angegeben werden (hier: x=).
  • beim Aufruf die Argumente der Funktion angegeben werden (hier x = 16, base = 2). Dabei spielt die Reihenfolge in der die Argumente angegeben werden keine Rolle.
  • Alternativ müssen alle Argumente in der exakt richtigen Reihenfolge ohne auslassung angegeben werden (hier: 16, 2). Bei Funktionen mit vielen Argumenten geben wir im wesentlichen immer die Argumentnamen mit an.

Der Pipe-Operator

Der Pipe Operator schiebt das erste Argument (und nur das!) in die Funktion. Der obige Ausdruck kann dann wie folgt geschrieben werden

16 |> log(2)
[1] 4
# oder

16 |> log(base = 2)
[1] 4

Vorsicht wegen der Präzedenz:

^, - (unär) und : werden vor dem Pipe-Operator ausgewertet, *, /, + und - (binär) sowie logische Operatoren nach dem Pipe-Operator:

3^9 |> sqrt() # entspricht sqrt(3^9)
[1] 140.2961

aber

3*9 |> sqrt() # entspricht 3*sqrt(9)
[1] 9

Der Pipe-Operator ist insbesondere bei der Verwendung von Tidyverse sinnvoll, da sehr viele Funktionen eine Datentabelle als erstes Argument haben (data bzw. .data) und eine Datentabelle als Ergebnis haben, die dann in die nächste Funktion geschoben wird:

library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.2.1          ✔ readr     2.2.0     
✔ forcats   1.0.1          ✔ stringr   1.6.0     
✔ ggplot2   4.0.3.9000     ✔ tibble    3.3.1     
✔ lubridate 1.9.5          ✔ tidyr     1.3.2     
✔ purrr     1.2.2          
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
penguins |> filter(body_mass > 5000) |> 
            ggplot(aes(x = body_mass, y = flipper_len)) + 
               geom_point()

penguins |> # filter(body_mass > 5000) |>  
            ggplot(aes(x = body_mass, y = flipper_len)) + 
               geom_point()
Warning: Removed 2 rows containing missing values or values outside the scale range
(`geom_point()`).