Programação em R - Parte 6 (Listas e Data Frames)

Programação em R - Aprenda Analtics, Big Data & Ciência de Dados


Confira todos os textos da série Programação em R:


Uma lista R é um objeto constituído por uma coleção ordenada de objetos conhecidos como seus componentes.

Não há necessidade particular de os componentes serem do mesmo modo ou tipo e, por exemplo, uma lista pode consistir em um vetor numérico, um valor lógico, uma matriz, um vetor complexo, uma matriz de caracteres, uma função e em breve. Aqui está um exemplo simples de como fazer uma lista:

> Lst <- as="c" esposa="Mary" idade.crian="" list="" nome="Fred" p="" sem.filhos="3,">

Os componentes são sempre numerados e sempre podem ser referidos como tais. Assim, se Lst é o nome de uma lista com quatro componentes, estes podem ser designados individualmente como Lst [[1]], Lst [[2]], Lst [[3]] e Lst [[4]]. Se, além disso, Lst [[4]] é uma matriz subdividida em vetor, então Lst [[4]] [1] é a primeira entrada.

Os componentes das listas também podem ser nomeados e, neste caso, o componente pode ser referido, seja dando o nome do componente como uma seqüência de caracteres no lugar do número em colchetes duplos, ou, mais convenientemente, dando uma expressão no formato

> nome$nome_componente

Esta é uma convenção muito útil, pois torna mais fácil obter o componente certo se você esquecer o número.

Então no exemplo simples dado acima:

Lst$nome é o mesmo que Lst[[1]] e é a string "Fred",

Lst$esposa é o mesmo que Lst[[2]] e é a string "Mary",

Lst$idade.crianças[1] é o mesmo que Lst[[4]] [1] e é o número 4.

Além disso, também se pode usar os nomes dos componentes da lista em colchetes duplos, ou seja, Lst[["nome"]] é o mesmo que Lst$nome. Isto é especialmente útil, quando o nome do componente a ser extraído é armazenado em outra variável como em

> x <- lst="" nome="" p="" x="">

É muito importante distinguir Lst[[1]] de Lst[1]. '[[...]]' como operador usado para selecionar um único elemento, enquanto '[...]' é um operador de inscrição geral. Assim, o primeiro é o primeiro objeto na lista Lst, e se é uma lista nomeada, o nome não está incluído. O último é uma sublista da lista Lst consistindo apenas na primeira entrada. Se for uma lista nomeada, os nomes são transferidos para a sublistar.

O vetor de nomes é de fato simplesmente um atributo da lista como qualquer outro e pode ser tratado como tal. Outras estruturas além das listas podem, naturalmente, ser atribuídas também a um atributo de nomes.

Construindo e modificando listas


Novas listas podem ser formadas a partir de objetos existentes pela função list(). Uma atribuição

> Lst <- ...="" list="" name_1="object_1," name_m="object_m)</p">

configura uma lista Lst de m componentes usando object_1, ..., object_m para os componentes e dando-lhes nomes conforme especificado pelos nomes dos argumentos (que podem ser escolhidos livremente). Se esses nomes forem omitidos, os componentes são apenas numerados. Os componentes usados ​​para formar a lista são copiados ao formar a nova lista e os originais não são afetados.

As listas, como qualquer objeto inscrito, podem ser estendidas especificando componentes adicionais. Por exemplo

> Lst [5] <- list="" matrix="Mat)</p">

Concatenando Listas


Quando a função de concatenação c() recebe argumentos de lista, o resultado é também um objeto lista, cujos componentes são aqueles das listas de argumentos unidos em sequência.

> list.ABC <- c="" list.a="" list.b="" list.c="" p="">

Lembre-se de que, com objetos vetoriais como argumentos, a função de concatenação uniu de forma semelhante todos os argumentos em uma única estrutura vetorial. Nesse caso, todos os outros atributos são descartados.

Data Frames


Um "quadro de dados" é uma lista com a classe "data.frame". Existem restrições nas listas que podem ser feitas em quadros de dados, ou seja,
  • Os componentes devem ser vetores (numéricos, caracteres ou lógicos), fatores, matrizes numéricas, listas ou outros quadros de dados.
  • Matrizes, listas e quadros de dados fornecem tantas variáveis para o novo quadro de dados como eles têm colunas, elementos ou variáveis, respectivamente.
  • Os vetores numéricos, os lógicos e os fatores são incluídos como são, e, por padrão, 18 vetores de caracteres são coagidos como fatores, cujos níveis são os valores exclusivos que aparecem no vetor.
  • As estruturas de vetores que aparecem como variáveis da estrutura de dados devem ter o mesmo comprimento, e as estruturas da matriz devem ter o mesmo tamanho da linha.
Um Data Frame pode, para muitos fins, ser considerado como uma matriz com colunas possivelmente de diferentes modos e atributos. Pode ser exibido em matriz e suas linhas e colunas extraídas usando convenções de indexação de matrizes.

Criando Data Frames


Objetos que satisfaçam as restrições colocadas nas colunas (componentes) de um quadro de dados podem ser usados ​​para formar um usando a função data.frame:

> contadores <- data.frame="" p="">

Uma lista cujos componentes estão em conformidade com as restrições de um quadro de dados pode ser convertida em um quadro de dados usando a função as.data.frame ()

A maneira mais simples de construir um quadro de dados a partir do zero é usar a função read.table () para ler um quadro de dados inteiro de um arquivo externo.

Trabalhando com Data Frames


Uma convenção útil que permite que você trabalhe com muitos problemas diferentes confortavelmente no mesmo diretório de trabalho é
  • reunir todas as variáveis ​​para qualquer problema bem definido e separado em um quadro de dados sob um nome adequadamente informativo;
  • Ao trabalhar com um problema, coloque o quadro de dados apropriado na posição 2 e use o diretório de trabalho no nível 1 para quantidades operacionais e variáveis ​​temporárias;
  • antes de deixar um problema, adicione as variáveis ​​que deseja manter para futuras referências ao quadro de dados usando a forma $ de atribuição, e então desanexar ();
  • Por fim, remova todas as variáveis ​​indesejadas do diretório de trabalho e mantenha-o tão limpo quanto possível nas variáveis ​​temporárias de esquerda.
Desta forma, é bem simples trabalhar com muitos problemas no mesmo diretório, todos com variáveis ​​denominadas x, y e z, por exemplo.

Conclusão


Data Frames são talvez o tipo de dado mais útil da linguagem R, e por isso mesmo vale muito a pena entender todas as facilidades que este tipo de objeto oferece.

Neste texto apresentamos apenas uma rápida noção de algumas das possibilidades ao trabalhar com Data Frames, que sequer arranham a variedade de possíveis usos deste objeto.

Por isso recomendo fortemente que se aprofunde no entendimento dos Data Frames, incluindo importar dados em Data Frames, exportar dados, Slicing de dados com Data Frames e muito mais.

Christian Guerreiro

Professor por vocação, blogueiro e servidor público por opção, amante da tecnologia e viciado em informação.


Ensino a distância em Bitcoin & Criptomoedas, além de Tecnologia da Informação: Virtualização com VMware, Big Data com Hadoop, Certificação ITIL 2011 Foundations e muito mais.


Suporte o Tecnologia que Interessa!

Você acha que as informações compartilhadas aqui são úteis?
Então me ajude a produzir ainda mais e melhores conteúdos!


É muito fácil. Basta divulgar nossos treinamentos pra alguém que conheça!


E se for de Salvador, podemos estruturar um curso presencial para sua empresa!

Eu vou ficar muito grato (e quem fizer os curso também :)!