Introdução ao R

Programação orientada a objetos

  • Programação orientada a objetos.

  • Tudo no são objetos.

  • Objetos possuem uma estrutura de dados que armazenam variáveis.

  • Variáveis armazenam valores ou conjunto de valores de acordo com o tipo dos dados

  • As variáveis populam estruturas de dados.

Principais estruturas de dados

As variáveis são armazenadas em tipos de estruturas de dados:

  • vetores
  • listas
  • matrizes
  • dataframes
  • arrays

  • Funções são também são objetos, mas executam um conjunto operações determinadas.

Principais tipos de dados

As váriáveis pode ser de diferentes tipos:

  • numeric

    • integer, double
  • character

    • string
  • logical

    • TRUE, FALSE
  • factor

    • variáveis categóricas

    • nº limitado de valores

    • níveis do fator

Classe x propriedade x atributo

  • Todo objeto tem uma classe.
    • Diz-se que um objeto é uma instância de uma classe.
      • Uma classe contém propriedades.
        • O valor que cada propriedade assume em um objeto é chamado de atributo.

  • Outras classes podem ser definidas.

Sistema de referência

  • No R, há um sistema de referência de classes.
Classe S3 Classe S4
Atributos são acessados usando $ Atributos são acessados usando @

Linguagem R

  • Tudo após # não é lido pelo R. Este é um caractere de comentário.

  • O diferencia maiúsculas de minúsculas.

  • Há uma série de operadores pré-programados.

Console

  • O console do refere-se ao ambiente de desenvolvimento e o prompt de comando (command prompt) é a linha de inserção de comando. O símbolo no prompt de comando é o “>”, porém ele também muda para “+” quando há a entrada de um comando incompleto. Com o sinal de +, o console indica que aguarda a completude do comando inserido.

  • Tudo após o símbolo “#” não é lido pelo R. Esse é o caráter para introdução de notas e comentários.

  • O  diferencia maiúsculas de minúsculas.

Criando objetos

Para atribuir um valor a um objeto, utilize o operador <- (ou =):

x <- 4
x
[1] 4
y = 5
x + y
[1] 9

Funções

Sintaxe da função

função()

função(argumento1 = valor, argumento2 = valor, ...)

Vamos criar uma função como exemplo:

função <- function(arg1 = "", arg2 = ""){
  
  Código_da_função
  
}

Vamos observar os argumentos da função com a função args()

args(função) # Mostra os argumentos da função `função`
function (arg1 = "", arg2 = "") 
NULL

Funções básicas

Versão, licença e citação:

R.Version() # mostra a versão
$platform
[1] "x86_64-pc-linux-gnu"

$arch
[1] "x86_64"

$os
[1] "linux-gnu"

$system
[1] "x86_64, linux-gnu"

$status
[1] ""

$major
[1] "4"

$minor
[1] "5.0"

$year
[1] "2025"

$month
[1] "04"

$day
[1] "11"

$`svn rev`
[1] "88135"

$language
[1] "R"

$version.string
[1] "R version 4.5.0 (2025-04-11)"

$nickname
[1] "How About a Twenty-Six"
license() # informações sobre a licença

This software is distributed under the terms of the GNU General
Public License, either Version 2, June 1991 or Version 3, June 2007.
The terms of version 2 of the license are in a file called COPYING
which you should have received with
this software and which can be displayed by RShowDoc("COPYING").
Version 3 of the license can be displayed by RShowDoc("GPL-3").

Copies of both versions 2 and 3 of the license can be found
at https://www.R-project.org/Licenses/.

A small number of files (the API header files listed in
R_DOC_DIR/COPYRIGHTS) are distributed under the
LESSER GNU GENERAL PUBLIC LICENSE, version 2.1 or later.
This can be displayed by RShowDoc("LGPL-2.1"),
or obtained at the URI given.
Version 3 of the license can be displayed by RShowDoc("LGPL-3").

'Share and Enjoy.'
citation() # como citar
To cite R in publications use:

  R Core Team (2025). _R: A Language and Environment for Statistical
  Computing_. R Foundation for Statistical Computing, Vienna, Austria.
  <https://www.R-project.org/>.

Uma entrada BibTeX para usuários(as) de LaTeX é

  @Manual{,
    title = {R: A Language and Environment for Statistical Computing},
    author = {{R Core Team}},
    organization = {R Foundation for Statistical Computing},
    address = {Vienna, Austria},
    year = {2025},
    url = {https://www.R-project.org/},
  }

We have invested a lot of time and effort in creating R, please cite it
when using it for data analysis. See also 'citation("pkgname")' for
citing R packages.

Funções de ajuda:

help() # função ajuda
help.start() # Manuais e outros materiais
inicializando servidor httpd de ajuda ... concluído
Se o navegador aberto por 'xdg-open' já está rodando, ele *não* é
    reinicializado e você precisa trocar para a sua janela.
Caso contrário, seja paciente ...
help(base) # Manual do pacote "base"

Funções de data e hora:

Sys.time() # Obtém data e horário exatos do sistema
[1] "2026-03-16 16:27:30 -03"

Pacotes

Pacotes mais baixados:

Pacotes mais baixados em tempo real:

Prática

Indexação de objetos

x <- 4 # cria o objeto "x" atribuindo o valor "4"
x # Observe o objeto criado
[1] 4

Para concatenar vários valores utilize a função c:

Concatenar vários valores e atribuí-los a um objeto:

x <- c(4, 5, 6, 7, 8)
x # Observe o objeto criado
[1] 4 5 6 7 8

Extrair um ou vários valores de um objeto a partir da indexação:

x[3]
[1] 6
x[c(1, 4)]
[1] 4 7

Substitua valores de um objeto a partir da indexação:

y <- c(24, 10, 45, 56, 20, 29, 50, 67, 80, 23, 20, 15, 65, 57, 34, 63, 20)
y[y==20] <- 10 # Se algum valor de y é igual a 20, substituir por 10
y
 [1] 24 10 45 56 10 29 50 67 80 23 10 15 65 57 34 63 10
y[y==10] <- "NA" # Apaga todos os valores iguais a 10, substituindo por "NA"
y
 [1] "24" "NA" "45" "56" "NA" "29" "50" "67" "80" "23" "NA" "15" "65" "57" "34"
[16] "63" "NA"

Deleta o objeto:

rm(x)

Pode-se criar objetos com valores numéricos (numeric), conforme mostrado até aqui, mas também objetos com valores de caracteres (character), lógicos (logical) ou fatores (factor).

Objetos do tipo character podem ser criados utilizando aspas (” “) entre os valores incluídos. Um objeto do tipo factor cria categorias para cada valor encontrado no objeto. Geralmente são usados em diversos pacotes para análises filogenéticas:

character <-c("apical", "apical", "basal", "apical", "apical", "basal", "median")
character
[1] "apical" "apical" "basal"  "apical" "apical" "basal"  "median"
charact_fact <- factor(character)
charact_fact
[1] apical apical basal  apical apical basal  median
Levels: apical basal median

Operadores de lógica

< | less than |
<= | less than or equal to |
> | greater than |
>= | greater than or equal to |
== | exactly equal to |
!= | not equal to |
!x | not x |
x | y | x OR y |
x & y | x AND y | ——– ———

Vamos testar:

x <- c(1:10)
x
 [1]  1  2  3  4  5  6  7  8  9 10
x[(x>8) | (x<5)]
[1]  1  2  3  4  9 10
# Qual a lógica?
x > 8
 [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
x < 5
 [1]  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
x > 8 | x < 5
 [1]  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE
x[c(T, T, T, T, F, F, F, F, T, T)]
[1]  1  2  3  4  9 10

Experimente a utilização dos operadores matemáticos simples entre diferentes objetos:

x
 [1]  1  2  3  4  5  6  7  8  9 10
y
 [1] "24" "NA" "45" "56" "NA" "29" "50" "67" "80" "23" "NA" "15" "65" "57" "34"
[16] "63" "NA"

Inspecionando os atributos um objeto

object.size(x) # Tamanho do objeto
96 bytes
str(x) # Estrutura do objeto
 int [1:10] 1 2 3 4 5 6 7 8 9 10
length(x) # Comprimento
[1] 10
attributes(x) # Nomes, classes, etc
NULL
class(x) # Tipo do objeto
[1] "integer"
mode(x) # Modo usado pelo R para armazenar objeto na memória
[1] "numeric"
typeof(x) # Tipo usado pelo R para armazenar objeto na memória
[1] "integer"

Inspecione os objetos criados. Exemplos:

class(x)
[1] "integer"
class(y)
[1] "character"
class(character)
[1] "character"
class(charact_fact)
[1] "factor"

Teste e Coerção de objetos

Com os métodos da função is é possível testar se um objeto corresponde a uma determinada classe. E com os métodos da função as é possível coagir um objeto de uma classe a transformar-se em outra.

Veja os métodos das funções is e as: (Retire o operador # da frente do comando para rodá-lo)

methods(is)
Warning in .S3methods(generic.function, class, envir, all.names = all.names, :
a função 'is' parece não ser uma genérica S3; função que parecem métodos S2
encontradas
 [1] is.array                is.atomic               is.call                
 [4] is.character            is.complex              is.data.frame          
 [7] is.double               is.element              is.empty.model         
[10] is.environment          is.expression           is.factor              
[13] is.finite               is.finite.POSIXlt       is.function            
[16] is.hashtab              is.infinite             is.infinite.POSIXlt    
[19] is.integer              is.language             is.leaf                
[22] is.list                 is.loaded               is.logical             
[25] is.matrix               is.mts                  is.na                  
[28] is.na.data.frame        is.na.numeric_version   is.na.POSIXlt          
[31] is.na<-                 is.na<-.default         is.na<-.factor         
[34] is.na<-.numeric_version is.name                 is.nan                 
[37] is.nan.POSIXlt          is.null                 is.numeric             
[40] is.numeric_version      is.numeric.Date         is.numeric.difftime    
[43] is.numeric.POSIXt       is.object               is.ordered             
[46] is.package_version      is.pairlist             is.primitive           
[49] is.qr                   is.R                    is.raster              
[52] is.raw                  is.recursive            is.relistable          
[55] is.single               is.stepfun              is.symbol              
[58] is.table                is.ts                   is.tskernel            
[61] is.unsorted             is.vector              
see '?methods' for accessing help and source code
# methods(as)

Teste com os objetos já criados:

RStudio

O RStudio é um Ambiente Interativo de Desenvolvimento (IDE) que traz o console R, um editor de script, a exibição dos objetos e funções do ambiente de trabalho, área de plotagem, entre outras funcionalidades e automatizações, dentre as quais:

  • Identação automática

  • Complementação de parênteses

  • Editor com destaque de sintaxe

  • Auto-completar comandos

Ambiente de Trabalho

  • O ambiente de trabalho (workspace) é o espaço virtual onde os objetos definidos pelo usuário (vetores, matrizes, dataframes, listas, funções) são alocados.

  • No RStudio, podemos observar o ambiente de trabalho e seus objetos na aba Ènvironment.

Diretório de Trabalho

  • O diretório de trabalho (working directory) define o diretório-raiz do caminho de diretórios para fins de entrada e saída de arquivos. Ele define o caminho relativo para um caminho de diretórios.

  • O caminho absoluto tem início na pasta raiz do seu disco local do computador. O caminho absoluto do ambiente de trabalho (workspace) pode ser obtido com a função getwd(). Abaixo vemos o diretório-raiz do presente bookdown no computador local:

getwd()
[1] "/home/lsbjordao/Repos/Introducao-a-Filoinformatica"

ls() # lista todos os objetos/funções do Ambiente de Trabalho
[1] "charact_fact"    "character"       "função"          "pandoc_dir"     
[5] "quarto_bin_path" "x"               "y"              
rm(list = ls()) # limpa todo Ambiente de Trabalho

ls() # lista todos os objetos/funções do Ambiente de Trabalho
character(0)