Tracks
/
R
R
/
Lehrplan
/
Names-Attribut
Na

Names-Attribut in R

1 Übung

Über Names-Attribut

Vektoren können benannte Elemente haben, was sie manchmal bequemer macht, mit ihnen zu arbeiten.

Erstellen

Es gibt drei Möglichkeiten, einem Vektor Namen hinzuzufügen.

  1. Beim Erstellen des Vektors
> work_days <- c(Mon = TRUE, Tue = TRUE, Wed = TRUE, Thu = TRUE, Fri = TRUE, Sat = FALSE, Sun = FALSE)
> work_days
  Mon   Tue   Wed   Thu   Fri   Sat   Sun 
 TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE 
  1. Indem du names() einen Character-Vektor zuweist
> months <- c(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
> names(months) <- month.abb
> months
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
 31  28  31  30  31  30  31  31  30  31  30  31 
  1. Mit setNames()
> months <- c(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
> setNames(months, month.name)
  January  February     March     April       May      June      July    August September   October  November  December 
       31        28        31        30        31        30        31        31        30        31        30        31 

Entfernen

Wenn die Namen nicht mehr erwünscht sind, kannst du sie entfernen, indem du sie auf NULL setzt.

> work_days
  Mon   Tue   Wed   Thu   Fri   Sat   Sun 
 TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE 
> names(work_days) <- NULL
> work_days
[1]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE

Die Funktion unname() erreicht dasselbe und macht deine Absicht vielleicht klarer.

Arbeiten mit Namen

Die Funktion names() kann Namen nicht nur setzen, sondern auch abrufen.

> names(months) <- month.abb
> names(months)[1:3]
[1] "Jan" "Feb" "Mar"

Ein Name kann anstelle des Positionsindex verwendet werden, wobei hier Anführungszeichen erforderlich sind.

> months[c("Jul", "Aug")]
Jul Aug 
 31  31 

Damit eine solche Indizierung korrekt funktioniert, solltest du dafür sorgen, dass die Namen eindeutig und nicht fehlend sind. R erzwingt Eindeutigkeit jedoch nicht.

Die üblichen Vektoroperationen funktionieren weiterhin, und die Namen bleiben in der Regel erhalten, wenn das sinnvoll ist.

> months[months == 30]
Apr Jun Sep Nov 
 30  30  30  30 

> sum(months)
[1] 365  # no meaningful names possible

Weiterführende Themen

Viele R-Objekte, darunter auch vectors, können beliebige Attribute haben. Das Attribut names ist nur ein Beispiel, wenn auch ein besonders häufiges und wichtiges.

In der Praxis sind Namen für Vektoren manchmal nützlich, aber selten unverzichtbar. Das names-attribute wird für komplexere Strukturen wie lists und dataframes deutlich wichtiger, wie wir in künftigen Konzepten sehen werden.

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab

Lerne Names-Attribut