Trilhas
/
R
R
/
Programa
/
Atributo names
At

Atributo names em R

1 exercício

Sobre Atributo names

Vetores podem ter elementos nomeados, o que às vezes torna mais prático trabalhar com eles.

Criação

Há três formas de adicionar nomes a um vetor.

  1. No momento da criação do vetor
> 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. Atribuindo um vetor de caracteres 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. Com 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 

Remoção

Se os nomes não forem mais necessários, é possível removê-los atribuindo 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

A função unname() faz a mesma coisa e talvez deixe sua intenção mais clara.

Trabalhando com nomes

A função names() pode obter os nomes, além de defini-los.

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

Um nome pode ser usado no lugar do índice de posição, e nesse caso as aspas são obrigatórias.

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

Para que essa indexação funcione corretamente, é melhor garantir que os nomes sejam únicos e não ausentes. No entanto, o R não exige unicidade.

As operações usuais com vetores continuam funcionando, e os nomes geralmente são preservados quando isso faz sentido.

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

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

Tópicos mais avançados

Muitos objetos do R, incluindo vectors, podem ter atributos arbitrários anexados a eles. O atributo names é apenas um exemplo, embora seja um exemplo especialmente comum e importante.

Na prática, os nomes às vezes são úteis para vetores, mas raramente essenciais. O names-attribute se torna muito mais importante em estruturas mais complexas, como lists e dataframes, como veremos em conceitos futuros.

Editar via GitHub O link abre em uma nova janela ou aba

Aprenda Atributo names