A vektorok elemei kaphatnak nevet, ami néha kényelmesebbé teszi a velük való munkát.
Háromféleképpen adhatsz nevet egy vektor elemeinek.
> 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
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
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
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.
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
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.