Tracce
/
R
R
/
Programma
/
Attributo names
At

Attributo names in R

1 esercizio

Informazioni su Attributo names

I vettori possono avere elementi con un nome, il che a volte li rende più comodi da usare.

Creazione

Ci sono tre modi per aggiungere dei nomi a un vettore.

  1. Al momento della creazione del vettore
> 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. Assegnando un vettore di caratteri a 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 
  1. Con 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 

Rimozione

Se i nomi non servono più, si possono rimuovere impostandoli a 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

La funzione unname() fa la stessa cosa, e forse rende più chiara l'intenzione.

Lavorare con i nomi

La funzione names() può sia recuperare i nomi sia impostarli.

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

Un nome può essere usato al posto dell'indice di posizione, ma in questo caso servono le virgolette.

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

Perché questo tipo di indicizzazione funzioni correttamente, è meglio assicurarsi che i nomi siano unici e non mancanti. Tuttavia, R non impone l'unicità.

Le solite operazioni sui vettori funzionano comunque, e di norma i nomi vengono conservati se ha senso.

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

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

Argomenti più avanzati

Molti oggetti R, inclusi i vectors, possono avere attributi arbitrari. L'attributo names è solo un esempio, anche se particolarmente comune e importante.

In pratica, i nomi a volte sono utili per i vettori ma raramente essenziali. L'attributo names-attribute diventa molto più importante per strutture più complesse come lists e dataframes, come vedremo nei prossimi concetti.

Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Attributo names