Kurzusok
/
R
R
/
Tanterv
/
names attribútum
na

names attribútum ebben a kurzusban: R

1 feladat

A(z) names attribútum fogalomról

A vektorok elemei kaphatnak nevet, ami néha kényelmesebbé teszi a velük való munkát.

Létrehozás

Háromféleképpen adhatsz nevet egy vektor elemeinek.

  1. A vektor létrehozásakor
> 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. Úgy, hogy egy karaktervektort értékül adsz a names() függvénynek
> 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. A setNames() függvénnyel
> 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 

Eltávolítás

Ha már nincs szükség a nevekre, eltávolíthatod őket úgy, hogy NULL értéket adsz nekik.

> 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

Az unname() függvény ugyanezt éri el, és talán világosabbá is teszi a szándékodat.

Munka a nevekkel

A names() függvénnyel a neveket nemcsak beállíthatod, hanem le is kérdezheted.

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

Egy név használható a pozícióindex helyett, ilyenkor viszont idézőjelekbe kell tenned.

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

Ahhoz, hogy az ilyen indexelés helyesen működjön, a legjobb, ha gondoskodsz róla, hogy a nevek egyediek legyenek, és egyik se hiányozzon. Az R azonban nem kényszeríti ki az egyediséget.

A szokásos vektorműveletek továbbra is működnek, és a nevek általában meg is maradnak, ha annak van értelme.

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

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

Haladóbb témák

Sok R-objektumhoz, köztük a vectors-hoz is, tetszőleges attribútumokat rendelhetsz. A names attribútum csupán egyetlen példa erre, igaz, különösen gyakori és fontos.

A gyakorlatban a nevek néha hasznosak a vektoroknál, de ritkán nélkülözhetetlenek. A names-attribute sokkal fontosabbá válik összetettebb struktúrák, például a lists és a dataframes esetében, ahogy azt a későbbi fogalmaknál látni fogjuk.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) names attribútum fogalmat