Listen mit Name/Wert Assoziationen

Author

Claudia Spannbauer

Anwendungsfall:

  • Es soll eine Liste erstellt werden, die Namen und Werte miteinander verbindet, ähnlich wie ein dictionary, hash oder lookup table in einer anderen Programmiersprache

Die list() Funktion ermöglicht es, Elementen Namen zu geben:

lst <- list(mid = 0.5, right = 0.841, far.right = 0.977)
lst
$mid
[1] 0.5

$right
[1] 0.841

$far.right
[1] 0.977

Lösung:

Zwei Vektoren für Namen und Werte kann man zusammenführen, indem man zunächst eine leere Liste erstellt und diese dann mit den Vektoren füllt:

values <- c(1, 2, 3)
names <- c("a", "b", "c")

lst <- list()
lst[names] <- values
lst
$a
[1] 1

$b
[1] 2

$c
[1] 3

Oder direkt

Man kann die Werte auch direkt den Namen hinzufügen, wenn man die Liste erstellt:

lst <- list(
  far.left = -2,
  left = -1,
  mid = 0,
  right = 1,
  far.right = 2
)
lst
$far.left
[1] -2

$left
[1] -1

$mid
[1] 0

$right
[1] 1

$far.right
[1] 2

Oder so:

values <- -2:2
names <- c("far.left", "left", "mid", "right", "far.right")
lst <- list()
lst[names] <- values
lst
$far.left
[1] -2

$left
[1] -1

$mid
[1] 0

$right
[1] 1

$far.right
[1] 2

Nutzung:

Wenn die Assoziation erstellt ist, kann die Liste ganz einfach Namen in Werte übersetzen:

cat("Die linke Grenze ist", lst[["far.left"]], "\n")
Die linke Grenze ist -2