Τα διανύσματα μπορούν να έχουν στοιχεία με ονόματα, κάτι που μερικές φορές τα κάνει πιο βολικά στη χρήση.
Υπάρχουν τρεις τρόποι για να προσθέσεις ονόματα σε ένα διάνυσμα.
> 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()
> 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()
> 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
Αν δεν θέλεις πια τα ονόματα, μπορείς να τα αφαιρέσεις ορίζοντάς τα σε NULL
> 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
Η συνάρτηση unname() πετυχαίνει το ίδιο, και ίσως κάνει την πρόθεσή σου πιο σαφή.
Η συνάρτηση names() μπορεί να ανακτήσει τα ονόματα, καθώς και να τα ορίσει.
> names(months) <- month.abb
> names(months)[1:3]
[1] "Jan" "Feb" "Mar"
Ένα όνομα μπορεί να χρησιμοποιηθεί αντί για τη θέση, και σε αυτή την περίπτωση απαιτούνται εισαγωγικά.
> months[c("Jul", "Aug")]
Jul Aug
31 31
Για να λειτουργεί σωστά αυτή η ευρετηρίαση, το καλύτερο είναι να διασφαλίσεις ότι τα ονόματα είναι μοναδικά και δεν λείπουν. Ωστόσο, η R δεν επιβάλλει τη μοναδικότητα.
Οι συνήθεις πράξεις των διανυσμάτων εξακολουθούν να λειτουργούν, και τα ονόματα συνήθως διατηρούνται όταν αυτό βγάζει νόημα.
> months[months == 30]
Apr Jun Sep Nov
30 30 30 30
> sum(months)
[1] 365 # no meaningful names possible
Πολλά αντικείμενα της R, συμπεριλαμβανομένων των vectors, μπορούν να έχουν αυθαίρετα χαρακτηριστικά συνδεδεμένα πάνω τους. Το χαρακτηριστικό names είναι απλώς ένα παράδειγμα, αν και ένα ιδιαίτερα συνηθισμένο και σημαντικό.
Στην πράξη, τα ονόματα είναι μερικές φορές χρήσιμα στα διανύσματα, αλλά σπάνια είναι απαραίτητα. Το names-attribute γίνεται πολύ πιο σημαντικό για πιο σύνθετες δομές, όπως οι lists και τα dataframes, όπως θα δούμε σε επόμενες έννοιες.