Tipos de dados em R com exemplo

โšก Resumo Inteligente

Os tipos de dados em R definem como os valores sรฃo armazenados na memรณria, e os operadores decidem o que o R pode fazer com eles. Vetores, variรกveis, operadores aritmรฉticos, relacionais, lรณgicos e de atribuiรงรฃo sรฃo abordados aqui com exemplos executรกveis.

  • ๐Ÿ”˜ Atomtipos de circuitos integrados: Em R, cada valor รฉ armazenado como lรณgico, inteiro, double, complexo, caractere ou bruto.
  • โ˜‘๏ธ Verificaรงรฃo de tipo: class(), typeof() e mode() descrevem um valor a partir de trรชs perspectivas diferentes.
  • โœ… Vetores: A funรงรฃo c() constrรณi uma coleรงรฃo unidimensional na qual cada elemento compartilha um รบnico tipo.
  • ๐Ÿงช Operatores: Os operadores aritmรฉticos, relacionais, lรณgicos e de atribuiรงรฃo abrangem praticamente todas as expressรตes bรกsicas do R.
  • ๐Ÿ› ๏ธ Subconjunto: Os colchetes, combinados com uma condiรงรฃo lรณgica, filtram os elementos do vetor em uma รบnica linha.
  • โš ๏ธ Nota de versรฃo: O R 4.3.0 transformou um argumento com comprimento maior que um para && ou || em um erro.

Tipos de dados em R

Quais sรฃo os tipos de dados em R?

A seguir estรฃo os tipos de dados ou estruturas de dados na programaรงรฃo R:

Essa lista mistura duas ideias relacionadas, e separรก-las facilita a compreensรฃo do restante desta pรกgina. tipo de dados Descreve o que รฉ um valor รบnico โ€” um nรบmero, um texto, um VERDADEIRO ou um FALSO. estrutura de dados descreve quantos valores sรฃo mantidos juntos e em que formato. Escalares, vetores, matrizes, data frames e listas sรฃo estruturas; os valores dentro delas ainda pertencem a um dos tipos bรกsicos do R.

Estrutura Dimensรตes Tipos mistos sรฃo permitidos? Uso tรญpico
Escalar Vetor de comprimento 1 Nรฃo Uma รบnica mediรงรฃo ou bandeira
vetor 1 Nรฃo Uma coluna de leituras de um tipo
Matriz 2 Nรฃo Grades numรฉricas e รกlgebra linear
Quadro de dados 2 Sim, um tipo por coluna. Conjuntos de dados tabulares
Lista 1, mas aninhรกvel Sim, qualquer coisa por elemento Resultados do modelo e contรชineres mistos

Em R, nรฃo existe um tipo escalar separado: um escalar รฉ simplesmente um vetor de comprimento um, razรฃo pela qual grande parte do cรณdigo em R รฉ escrita para vetores inteiros de uma sรณ vez.

Tipos de dados bรกsicos em R

Em R, cada valor pertence a um pequeno conjunto de tipos bรกsicos (atรดmicos):

  • 4.5 รฉ um valor decimal chamado numรฉrico.
  • O nรบmero 4 parece um nรบmero inteiro, mas o R ainda o armazena como um nรบmero de ponto flutuante de dupla precisรฃo (double). Escreva 4L quando for necessรกrio um nรบmero inteiro verdadeiro.
  • VERDADEIRO ou FALSO รฉ um valor booleano, chamado de valor lรณgico em R.
  • O valor entre aspas simples (โ€œ โ€) ou aspas duplas (' ') รฉ um texto (uma cadeia de caracteres). Esses valores sรฃo chamados de caracteres.

Dois outros tipos completam o conjunto. Valores complexos, como 3+2i, contรชm uma parte real e uma parte imaginรกria, e valores brutos contรชm bytes. Ambos aparecem raramente em anรกlises do dia a dia, mas estรฃo listados no R bรกsico. documentaรงรฃo typeof() juntamente com os quatro tipos comuns.

Formato Valor de exemplo class() retorna typeof() retorna
lรณgico VERDADEIRO lรณgico lรณgico
Nรบmero inteiro 4L nรบmero inteiro nรบmero inteiro
Double (numรฉrico) 4.5 numรฉrico duplo
Personagem "R รฉ Fantรกstico" personagem personagem
Complexo 3 + 2i integraรงรตes integraรงรตes
Cru como.bruto(10) cru cru

Podemos verificar o tipo de uma variรกvel com a funรงรฃo de classe.

Exemplo 1: Verificar uma variรกvel numรฉrica

# Declare variables of different types
# Numeric
x <- 28
class(x)

Saรญda:

## [1] "numeric"

Exemplo 2: Verificar uma variรกvel de caractere

# String
y <- "R is Fantastic"
class(y)

Saรญda:

## [1] "character"

Exemplo 3: Verificar uma variรกvel lรณgica

# Boolean
z <- TRUE
class(z)

Saรญda:

## [1] "logical"

Note que a funรงรฃo `class()` retorna "numรฉrico" para 28, mesmo que 28 nรฃo tenha parte decimal. O R o armazenou como um nรบmero de ponto flutuante de dupla precisรฃo (`double`), e somente a funรงรฃo `typeof()` revela isso. A prรณxima diferenรงa que vale a pena aprender รฉ como esses valores recebem nomes.

Variรกveis โ€‹โ€‹em R

As variรกveis โ€‹โ€‹sรฃo um dos blocos de construรงรฃo bรกsicos em R, responsรกveis โ€‹โ€‹pelo armazenamento de valores, e sรฃo essenciais para qualquer pessoa que trabalhe com ciรชncia de dados. Uma variรกvel em R pode armazenar um nรบmero, um objeto, um resultado estatรญstico, um vetor, um conjunto de dados ou uma previsรฃo de modelo โ€” basicamente qualquer coisa que o R produza. Podemos usar essa variรกvel posteriormente simplesmente chamando seu nome.

Para declarar uma variรกvel em R, precisamos atribuir um nome a ela. O nome nรฃo deve conter espaรงos. Podemos usar o caractere _ para unir duas palavras.

Os nomes podem conter letras, dรญgitos, pontos e sublinhados, mas devem comeรงar com uma letra ou um ponto, e palavras reservadas como TRUE, FALSE e NULL nรฃo podem ser usadas como nomes. Para adicionar um valor ร  variรกvel, use <- ou =.

Aqui estรก a sintaxe:

# First way to declare a variable:  use the `<-`
name_of_variable <- value
# Second way to declare a variable:  use the `=`
name_of_variable = value

Na linha de comando, podemos escrever os seguintes cรณdigos para ver o que acontece:

Exemplo 1: Atribua um valor e imprima-o.

# Print variable x
x <- 42
x

Saรญda:

## [1] 42

Exemplo 2: Declarar uma segunda variรกvel

y  <- 10
y

Saรญda:

## [1] 10

Exemplo 3: Usar duas variรกveis โ€‹โ€‹em uma รบnica expressรฃo

# We call x and y and apply a subtraction
x-y

Saรญda:

## [1] 32

Uma variรกvel que armazena vรกrios valores do mesmo tipo รฉ um vetor, que รฉ a estrutura esperada por quase todas as funรงรตes em R.

Vetores em R

Um vetor รฉ uma coleรงรฃo unidimensional na qual todos os elementos compartilham o mesmo tipo. Podemos criar um vetor com todos os tipos de dados bรกsicos do R aprendidos anteriormente. A maneira mais simples de construir um vetor em R รฉ usar a funรงรฃo `c()`.

Exemplo 1: Criar um vetor numรฉrico

# Numerical
vec_num <- c(1, 10, 49)
vec_num

Saรญda:

## [1]  1 10 49

Exemplo 2: Criar um vetor de caractere

# Character 
vec_chr <- c("a", "b", "c")
vec_chr

Saรญda:

## [1] "a" "b" "c"

Exemplo 3: Criar um vetor lรณgico

# Boolean 
vec_bool <-  c(TRUE, FALSE, TRUE)
vec_bool

Saรญda:

##[1] TRUE FALSE TRUE

Se c() receber uma mistura de tipos, ela nรฃo falha. Ela silenciosamente converte cada elemento para o tipo mais geral presente, entรฃo c(1, "a", TRUE) se torna um vetor de caracteres. Tambรฉm podemos fazer cรกlculos aritmรฉticos com vetores em R.

Exemplo 4: Adicionar dois vetores elemento por elemento

# Create the vectors
vect_1 <- c(1, 3, 5)
vect_2 <- c(2, 4, 6)
# Take the sum of A_vector and B_vector
sum_vect <- vect_1 + vect_2
# Print out total_vector
sum_vect

Saรญda:

[1]  3  7 11

A adiรงรฃo funcionou elemento por elemento porque ambos os vetores tรชm o mesmo comprimento. Quando os comprimentos diferem, o R recicla o vetor mais curto, repetindo-o atรฉ que ele corresponda ao mais longo, e emite um aviso apenas quando o comprimento do vetor mais longo nรฃo for um mรบltiplo do mais curto.

Exemplo 5: Fatie os cinco primeiros elementos

Em R, รฉ possรญvel fatiar um vetor. Em algumas ocasiรตes, estamos interessados โ€‹โ€‹apenas nos cinco primeiros elementos de um vetor. Podemos usar o comando [1:5] para extrair esses elementos.tract os valores de 1 a 5.

# Slice the first five rows of the vector
slice_vector <- c(1,2,3,4,5,6,7,8,9,10)
slice_vector[1:5]

Saรญda:

## [1] 1 2 3 4 5

Exemplo 6: Criar um intervalo com os dois pontos Operator

A maneira mais curta de criar um intervalo de valores รฉ usar o operador de dois pontos (:) entre dois nรบmeros. Por exemplo, no exemplo acima, podemos escrever c(1:10) para criar um vetor de valores de um a dez.

# Faster way to create adjacent values
c(1:10)

Saรญda:

## [1]  1  2  3  4  5  6  7  8  9 10

Como um vetor muda de tipo silenciosamente quando รฉ misturado, รฉ importante saber como inspecionar e converter tipos sob demanda.

Como verificar e converter tipos de dados em R

Trรชs famรญlias de funรงรตes respondem ร s trรชs perguntas que surgem constantemente: o que รฉ isto, isto รฉ de um determinado tipo e isto pode se tornar de outro tipo?

Famรญlia de funรงรตes Pergunta que responde Exemplos
classe(), tipo(), modo() Que tipo รฉ esse valor? classe(28), tipo(28), modo(28)
รฉ.*() Este valor รฉ do tipo X? รฉ.numรฉrico(), รฉ.caractere(), รฉ.lรณgico()
como.*() Esse valor pode se tornar do tipo X? como.numรฉrico(), como.caractere(), como.inteiro()
str () Qual รฉ a aparรชncia geral deste objeto? str(vec_num)
# Three different views of the same value
x <- 28
class(x)      # "numeric"  -- the class used for method dispatch
typeof(x)     # "double"   -- how R stores the value internally
mode(x)       # "numeric"  -- the older S-style mode

# Ask a yes/no question about a type
is.numeric(x)     # TRUE
is.character(x)   # FALSE

# Convert between types
as.character(x)   # "28"
as.integer("28")  # 28 stored as an integer
as.numeric("abc") # NA, with a coercion warning

Duas regras explicam a maioria das surpresas aqui. Primeiro, `class()` reporta a classe usada para o despacho de mรฉtodos, enquanto `typeof()` reporta o armazenamento interno, razรฃo pela qual 28 รฉ "numรฉrico" para um e "double" para o outro. Segundo, uma conversรฃo que nรฃo pode ser bem-sucedida nรฃo interrompe o script: `as.numeric("abc")` retorna NA e imprime um aviso de coerรงรฃo, portanto, valores NA silenciosos apรณs uma importaรงรฃo sรฃo quase sempre um problema de tipo. A mesma lรณgica conduz a... fatores, que armazenam categorias como cรณdigos inteiros mais uma tabela de nรญveis.

Com os tipos definidos, o prรณximo passo sรฃo os operadores que atuam sobre eles.

R Aritmรฉtica Operatoros

Primeiramente, veremos os operadores aritmรฉticos bรกsicos em R. A seguir, apresentamos os operadores aritmรฉticos na linguagem de programaรงรฃo R e seus respectivos significados:

Operator Descriรงรฃo
+ Adiรงรฃo
- Subtracรงรฃo
* Multiplicaรงรฃo
/ Divisรฃo
^ ou ** Exponenciaรงรฃo
%% Mรณdulo (resto da divisรฃo)
%/% Divisรฃo inteira (quociente, resto descartado)

Cada um desses operadores รฉ vetorizado, portanto a mesma expressรฃo funciona em um รบnico valor ou em uma coluna inteira.

Exemplo 1: Adiรงรฃo

# An addition
3 + 4

Saรญda:

## [1] 7

Vocรช pode facilmente copiar e colar o cรณdigo R acima no RStudio Console. Neste artigo, a saรญda รฉ exibida nas linhas que comeรงam com ##. Por exemplo, se escrevermos o cรณdigo print("Guru99") o console imprime [1] "Guru99", que esta pรกgina mostraria como ## [1] "Guru99 ".

O ## marca uma linha de saรญda impressa e o nรบmero entre colchetes ([1]) รฉ o รญndice do primeiro valor nessa linha, nรฃo fazendo parte do resultado.

Frases que comeรงam com # sรฃo comentรกrios. Podemos usar # dentro de um script R para adicionar qualquer nota que quisermos, e o R a ignora em tempo de execuรงรฃo.

Exemplo 2: Multiplicaรงรฃo

# A multiplication
3*5

Saรญda:

## [1] 15

Exemplo 3: Divisรฃo

# A division
(5+5)/2

Saรญda:

## [1] 5

Exemplo 4: Exponenciaรงรฃo

# Exponentiation
2^5

Saรญda:

## [1] 32

Exemplo 5: Mรณdulo

# Modulo
28%%6

Saรญda:

## [1] 4

A aritmรฉtica produz nรบmeros. O prรณximo grupo de operadores produz VERDADEIRO e FALSO.

R Relacional (Comparaรงรฃo) Operatoros

Os operadores relacionais comparam dois valores e retornam um resultado lรณgico. Sรฃo eles que estabelecem as condiรงรตes utilizadas para a filtragem e sรฃo vetorizados exatamente da mesma forma que os operadores aritmรฉticos.

Operator Descriรงรฃo
> Melhor que
< Less do que
>= Melhor que ou igual a
<= Less que ou igual a
== Exatamente igual a
!= Diferente de
a <- 10
b <- 3

a > b     # TRUE
a < b     # FALSE
a >= 10   # TRUE
a <= 3    # FALSE
a == b    # FALSE
a != b    # TRUE

# Relational operators are vectorised
scores <- c(45, 78, 90, 62)
scores >= 60   # FALSE TRUE TRUE TRUE

Dois hรกbitos economizam tempo aqui. Use == para comparaรงรฃo e <- para atribuiรงรฃo, porque um รบnico = dentro de uma condiรงรฃo รฉ um erro comum de iniciantes. E evite == em nรบmeros de ponto flutuante de dupla precisรฃo: o arredondamento de ponto flutuante significa que 0.1 + 0.2 == 0.3 รฉ FALSO, entรฃo isTRUE(all.equal(0.1 + 0.2, 0.3)) รฉ o teste seguro. Comparaรงรตes em quadros de dados ordenados seguem as mesmas regras.

R Lรณgico Operatoros

Com os operadores lรณgicos, queremos retornar valores dentro do vetor com base em condiรงรตes lรณgicas. A tabela abaixo lista os operadores lรณgicos disponรญveis em R.

Tabela de referรชncia dos operadores lรณgicos e relacionais em R com seus significados.

Em R, as declaraรงรตes lรณgicas sรฃo delimitadas por colchetes []. Podemos adicionar quantas declaraรงรตes condicionais quisermos, mas precisamos incluรญ-las entre parรชnteses. Podemos seguir esta estrutura para criar uma declaraรงรฃo condicional:

variable_name[(conditional_statement)]

Com `variable_name` referindo-se ร  variรกvel que queremos usar na instruรงรฃo, criamos a declaraรงรฃo lรณgica, por exemplo, `variable_name > 0`. Finalmente, usamos colchetes para finalizar a declaraรงรฃo lรณgica. Abaixo estรก um exemplo de uma declaraรงรฃo lรณgica.

Exemplo 1: Compare cada elemento de um vetor

# Create a vector from 1 to 10
logical_vector <- c(1:10)
logical_vector>5

Saรญda:

## [1]FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE

Na saรญda acima, o R lรช cada valor e o compara com a condiรงรฃo `logical_vector>5`. Se o valor for estritamente maior que cinco, a condiรงรฃo รฉ VERDADEIRA; caso contrรกrio, รฉ FALSA. O R retorna um vetor com os valores VERDADEIRO e FALSO.

Exemplo 2: Mantenha apenas os elementos que correspondem

No exemplo abaixo, queremos extracPara selecionar os valores que atendem ร  condiรงรฃo "รฉ estritamente maior que cinco", podemos envolver a condiรงรฃo entre colchetes, precedida pelo vetor que contรฉm os valores.

# Print value strictly above 5
logical_vector[(logical_vector>5)]

Saรญda:

## [1]  6  7  8  9 10

Exemplo 3: Combinar duas condiรงรตes

# Print 5 and 6
logical_vector <- c(1:10)
logical_vector[(logical_vector>4) & (logical_vector<7)]

Saรญda:

## [1] 5 6

O exemplo 3 usa o caractere รบnico & propositalmente. Os operadores de um รบnico caractere & e | comparam vetores elemento por elemento e retornam um vetor, que รฉ o que a criaรงรฃo de subconjuntos exige. As formas duplas && e || retornam um รบnico valor e pertencem ร s condiรงรตes if() e while(). R 4.3.0Passar um argumento com mais de um elemento para && ou || resulta em um erro, e nรฃo em um aviso; portanto, as duas famรญlias de operadores nรฃo sรฃo mais intercambiรกveis. O operador ! nega uma condiรงรฃo, e xor() realiza o OU exclusivo.

Tarefa em R Operatoros

Os operadores de atribuiรงรฃo vinculam um valor a um nome. O R oferece mais operadores de atribuiรงรฃo do que a maioria das linguagens, e as diferenรงas sรฃo importantes quando o cรณdigo entra em desenvolvimento. funรงรตes.

Operator Descriรงรฃo
<- Atribuiรงรฃo ร  esquerda, a escolha idiomรกtica em R
= Atribuiรงรฃo ร  esquerda, mas normalmente reservada para argumentos de funรงรฃo.
-> Atribuiรงรฃo correta, vรกlida, mas raramente usada.
<< - Superatribuiรงรฃo que pesquisa ambientes envolventes
- >> Superatribuiรงรฃo correta
# Left assignment -- the idiomatic form
count <- 5

# Equals sign: works, but reserve it for function arguments
count = 5
round(3.14159, digits = 2)

# Right assignment
5 -> count

# Superassignment, used inside functions to reach an outer scope
count <<- 5

Os guias de estilo recomendam o uso de `<` para criar objetos e `=` para nomear argumentos dentro de uma chamada, pois assim as duas funรงรตes permanecem visualmente distintas. Use `<<` com moderaรงรฃo: ele modifica um objeto fora da funรงรฃo atual e dificulta a compreensรฃo do cรณdigo. Depois de dominar a atribuiรงรฃo e os tipos, os prรณximos passos sรฃo: importando dados reais e reshaping com dplyr; O Visรฃo geral da linguagem R Coloca toda a cadeia de ferramentas em contexto.

Perguntas Frequentes

Um vetor contรฉm elementos de apenas um tipo, e misturar tipos forรงa a coerรงรฃo. Uma lista contรฉm qualquer coisa em cada posiรงรฃo, incluindo outras listas, data frames ou funรงรตes, razรฃo pela qual os objetos do modelo sรฃo listas.

Quando dois vetores de comprimentos diferentes encontram um operador, R repete o vetor mais curto atรฉ que os comprimentos coincidam. c(1,2,3,4) + c(1,2) resulta em 2 4 4 6. Um aviso aparece apenas quando o vetor mais longo nรฃo รฉ um mรบltiplo.

NA indica um valor ausente em um vetor. NULL indica a ausรชncia de um objeto e tem comprimento zero. NaN รฉ um resultado numรฉrico indefinido, como 0/0. Inf รฉ a divisรฃo por zero, como em 1/0.

O operador %in% testa a pertinรชncia e retorna VERDADEIRO para cada elemento do lado esquerdo encontrado no vetor do lado direito. c(2,7) %in% c(1,2,3) retorna VERDADEIRO FALSO. Ele substitui longas cadeias de comparaรงรตes == unidas por |.

Escolher matriz para grades numรฉricas e รกlgebra linear, um quadro de dados para tabelas cujas colunas diferem em tipo, e um Lista quando os elementos tรชm formatos diferentes.

Introduzido no R 4.1.0, o operador |> passa o valor ร  sua esquerda para o primeiro argumento da funรงรฃo ร  sua direita. Ele encadeia etapas sem aninhamento de chamadas e nรฃo requer nenhum pacote, ao contrรกrio do operador pipe %>% do magrittr.

Os assistentes de IA sinalizam incompatibilidades de tipo, sugerem conversรตes as.* e elaboram cรณdigo de recodificaรงรฃo a partir de uma amostra de linhas. Eles tambรฉm propรตem etapas de engenharia de recursos antes de uma aprendizado de mรกquina O modelo foi ajustado. Sempre verifique o cรณdigo gerado comparando-o com seus dados.

Sim. O RStudio 2023.09.0 e versรตes posteriores incluem um Copiloto do GitHub Integraรงรฃo que completa expressรตes R diretamente no cรณdigo. ร‰ necessรกria uma assinatura do Copilot, e os administradores devem habilitรก-la no RStudio Server ou no Posit Workbench.

Resuma esta postagem com: