Percursos
/
R
R
/
Programa
/
Atributo names
At

Atributo names em R

1 exercício

Sobre Atributo names

Os vetores podem ter elementos com nome, o que por vezes torna mais prático trabalhar com eles.

Criação

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

  1. No momento de 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 carateres 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 já não quiseres os nomes, podes removê-los definindo-os como 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 o mesmo, e talvez torne a tua intenção mais clara.

Trabalhar com nomes

A função names() pode tanto obter nomes como defini-los.

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

Podes usar um nome em vez do índice de posição, mas, neste caso, as aspas são obrigatórias.

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

Para que este tipo de indexação funcione corretamente, é melhor garantir que os nomes são únicos e que nenhum está em falta. No entanto, o R não impõe que sejam únicos.

As operações habituais sobre vetores continuam a funcionar, e os nomes são geralmente 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 os vectors, podem ter atributos arbitrários associados. O atributo names é apenas um exemplo, ainda que particularmente comum e importante.

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

Editar via GitHub A ligação abre numa nova janela ou separador

Aprende Atributo names