Trabalhando com vetores nomeados em R

Vetores nomeados em R

Já sabemos que os vetores possuem um número de índice que identifica cada valor armazenado em suas posições. Assim, para acessar um elemento qualquer, usamos esse número de índice – por exemplo, para acessar o quarto elemento de um vetor usamos o índice [4].

Porém, em R também é possível atribuir nomes às posições de índice em um vetor, de modo a ser possível acessar esses elementos por meio deste nome escolhido, em vez de utilizar apenas o seu valor numérico. Usar um nome de identificação possui inúmeras utilidades em R, como por exemplo, criar tabelas de lookup.

Um exemplo de vetor nomeado é um dataset (conjunto de dados) interno de nome islands, disponível pronto para uso no R, cuja estrutura pode ser analisada usando-se a função str():

> str(islands)
Named num [1:48] 11506 5500 16988 2968 16 ...
- attr(*, "names") = chr [1:48] "Africa" "Antarctica" "Asia" "Australia" ...

Esse vetor armazena a área da superfície das 48 maiores massas de terra do mundo, incluindo continentes e grandes ilhas. Veja que foi retornada a informação de que se trata de um vetor com 48 elementos, com os valores dos primeiros elementos mostrados.
Na segunda linha, é mostrado que esse vetor possui um atributo que contém a palavra “names“, e os primeiros elementos desse atributo são “Africa”, “Antarctica”, “Asia” e “Australia”. Esses são os nomes de cada posição do vetor, e cada posição também possui o valor armazenado e associado a esses nomes.

Desta forma, podemos acessar os elementos do vetor por nome. Por exemplo, para verificarmos os valores atribuídos às posições “Antarctica” e “Australia”, podemos fazer o seguinte:

> islands[c("Antarctica", "Australia")]
Antarctica Australia
      5500      2968

Para saber quais são os nomes existentes em um vetor nomeado empregados a função names():

> names(islands)
[1] "Africa" "Antactica" "Asia" ...
[6] "Baffin" "Banks" "Borneo" ...

(saída truncada)

Como criar um vetor nomeado em R

Criamos um vetor nomeado atribuindo valores a um vetor comum, e então empregado a função names() para associar os nomes às posições de índice do vetor criado. Vejamos alguns exemplos:

1 – Vamos criar um vetor chamado aulas.materia, no qual iremos armazenar o número de aulas existentes em quatro matérias distintas:

> aulas.materia <- c(8, 10, 8, 12)

Mas de quais matérias são essas quantidades de aulas? Vamos agora associar os nomes das matérias ao vetor, usando-os como nomes das posições de índice:

> names(aulas.materia) <- c("Física", "Português", "História", "Matemática")

Note que passamos um vetor com os nomes das matérias para ser utilizado como nomes das posições. Podemos então verificar o conteúdo do vetor nomeado criado:

> aulas.materia
Física Português História Matemática
     8        10        8         12

2 – Queremos criar um vetor que contenha os nomes dos meses do ano, e os dias que cada mês possui. Para isso, começamos criando um vetor com a quantidade de dias de cada mês, em ordem:

> dias.mês <- c(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)

Logo após, vamos atribuir os nomes de índice, que são os nomes dos meses. Podemos criar um vetor contendo esses nomes, com fizemos no exemplo anterior; em inglês é possível utilizar o dataset interno chamado de “month.name”:

> names(dias.mês) <- month.name

Com o vetor criado, podemos consultar a quantidade de dias em um mês qualquer, por exemplo, em maio (“May”):

> dias.mês["May"]
May
31

O mesmo resultado será obtido se passarmos o número de índice da posição (5) em vez no nome atribuído. Para visualizar todos os meses com seus respectivos números de dias fazemos simplesmente:

> dias.mês[month.name]Criar vetor nomeado em linguagem R

Podemos também buscar itens neste vetor por meio dos valores armazenados, em vez de usar os índices ou nomes. Por exemplo, para saber quantos meses possuem no máximo 30 dias podemos executar:

> names(dias.mês[dias.mês == 30])
[1] "April" "June" "September"
[4] "November"

Neste exemplo verificamos os valores armazenados no vetor dias.mês comparando seus valores (e não os nomes de índice) com o valor 30, utilizando um operador de comparação de igualdade ==.

Nas próximas lições vamos falar sobre vetores compostos – mais precisamente, sobre matrizes em R.

 

Sobre Fábio dos Reis (1317 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*