class: center, middle, inverse, title-slide # Funções e Pacotes no R ###
### Profª: Edneide Ramalho ### 30 de junho de 2021 --- # Funções - Muitas coisas em R são feitas usando *chamadas de funções*, que são comandos parecidos à aplicação de uma função matemática de uma ou mais variáveis. - Os valores ou objetos que inserimos nas **funções** são chamados **argumentos**, alguns precisam ser identificados, outros não. - Vejamos alguns exemplos de funções nativas do R: + `c()`: combina argumentos em um veotor ou lista. + `sum()`: retorna a soma de todos os valores presentes. + `sqrt()`: retorna a raiz quadrada de um valor. + `mean()`: calcula a média de um vetor de valores. + `names()`: mostra os nomes das variáveis de uma base de dados. + `summary()`: retorna o resumo de um vetor ou base de dados. + `class()`: retorna a classe de um objeto. + `round()`: arredonda valores para a quantidade de casas decimais que escolhemos. + `args()`: mostra os argumentos de uma função + `plot()`: desenha um gráfico de dispersão. --- # Funções - Vamos usar `c()` para criar dois vetores, um para **peso** (valores: 60, 72, 57, 90, 95, 72) e outro para **altura** (valores: 1.75, 1.80, 1.65, 1.90, 1.74, 1.91). -- ```r peso <- c(60, 72, 57, 90, 95, 72) altura <- c(1.75, 1.80, 1.65, 1.90, 1.74, 1.91) ``` -- Agora, vamos usar as funções vistas anteriormente nestes vetores. -- #### `sum()` #### `sqrt()` #### `mean()` #### `summary()` #### `round()` #### `plot()` --- ## Pedindo ajuda (Help ?) - Se quiser saber o que uma **função** faz no R e que argumentos precisamos identificar, é só digitar o comando abaixo no console: ```r ?nome_da_função ``` - Vamos testar o help para algumas funções vistas anteriormente. ```r ?mean ?summary ?sum ``` --- ## `if`, `else` e `ifelse` ```r x <- 10 resultado <- if(x %% 2 == 0){ "O número é divisível por 2" }else{ "O número não é divisível por 2." } resultado ``` ``` ## [1] "O número é divisível por 2" ``` Podemos escrever a mesma função anterior usando o `ifelse`: ```r resultado <- ifelse(x %% 2 == 0, "Divisível por 2", "Não divisível por 2.") resultado ``` ``` ## [1] "Divisível por 2" ``` --- ## Criando suas próprias funções - Às vezes, queremos realizar operações para as quais não há funções prontas em R, por isso, também temos a possibilidade de criar nossas próprias funções. - A sintaxe para a criação de uma função é: ```r nome_da_funcao <- function(argumento_1, argumento_2, ..., argumento_n){ # Aqui, escrevemos o código da função que queremos executar } ``` --- ## Criando suas próprias funções Vejamos um exemplo. ### Exemplo Vamos criar uma função para calcular o IMC (Índice de Massa Corpórea). Sabemos que o IMC é calculado pela fórmula abaixo, com o peso em kg e a altura em metro. `$$IMC = \frac{Peso}{Altura^2}$$` --- ## Criando suas próprias funções - Vamos melhorar nossa função IMC. Ao invés de somente retornar um valor, seria interessante retornar também a classificação do IMC. Veja a classificação abaixo. **Classificação do IMC** - Menor que 18,5: magreza - Entre 18,5 e 24,9: normal - Entre 25,0 e 29,9: sobrepeso - Entre 30,0 e 39,9: obesidade - Maior que 40,0: obesidade grave Vejamos o **exercício 4** antes de retomar este exemplo. --- ## Exercícios - Funções **1** Suponha que o vetor peso tenha um de seus valores desconhecidos (isto é representado por `NA`, do inglês *Not Available* - valor não disponível). Tente calcular a média usando a função `mean()` para o novo vetor de peso, chamado `peso_2`. Qual o resultado? Usando o help da função `mean()` você consegue encontrar que outro argumento é necessário ao chamar a função, para evitar este tipo de resultado? ```r peso_2 <- c(60, 72, 57, NA, 90, 95, 72) ``` **2** Crie uma função que receba um número e retorne o quadrado deste número. **3** Crie uma função que receba 2 números e devolva a raiz quadrada da soma desses números. **4** Use o help para entender o que as funções `print()`, `paste()` e `paste0()` fazem. **5** Crie três objetos chamados `nome`, `cidade`, `idade`. Use a função `paste()` ou `paste0()` para juntar todas essas informações em um novo objeto chamado `dados_pessoais`. Use a função `print()` para imprimir o resultado. --- ## Retomando a função do IMC **Classificação do IMC** - Menor que 18,5: magreza - Entre 18,5 e 24,9: normal - Entre 25,0 e 29,9: sobrepeso - Entre 30,0 e 39,9: obesidade - Maior que 40,0: obesidade grave --- class: center # Pacotes no R <img src="hex-stickers.png" width="50%" /> --- # Pacotes - Um pacote é um conjunto de funções que têm como objetivo resolver um problema específico. - Algumas **funções**, como vimos, são nativas do R. Ou seja, não é preciso instalar nenhum pacote para utilizá-las. - Porém, algumas funções são provenientes de outros pacotes que precisam ser previamente instalados para que suas **funções** possam ser utilizadas. ## Instalação de pacotes Para instalar pacotes seguimos os comandos (na janela inferior direita): ```r Packages -> Install ``` -- Uma caixa de diálogo aparecerá e podemos digitar o nome do pacote desejado. Ou, podemos digitar a linha de comando abaixo: ```r install.packages("nome_do_pacote") ``` --- class: center # O pacote `ggplot2` <img src="ggplot2.png" width="40%" /> --- # O pacote `ggplot2` - O pacote `ggplot2` é utilizado para construção de gráficos e é baseado da Gramática dos Gráficos, que tem como premissa a construção de um gráfico por camadas. - Os gráficos ficam esteticamente mais bonitos que os gráficos bases do R. - Para ver exemplos de gráficos com o `ggplot2` acesse: https://www.r-graph-gallery.com/ggplot2-package.html --- # Instalando e carregando o pacote `ggplot2` ## Instalação: ```r install.packages("ggplot2") ``` -- ## Carregando o pacote para ser utilizado: ```r library(ggplot2) ``` --- ## Gráfico de dispersão: ```r library(ggplot2) ggplot(airquality, aes(x = Ozone, y = Wind)) + geom_point() + xlab("Ozônio (partes por bilhão)") + ylab("Velocidade do vento (milhas por hora)") ``` -- <!-- --> --- ## Gráfico de linha ```r library(ggplot2) ggplot(airquality, aes(x = Ozone, y = Wind)) + geom_line() + xlab("Ozônio (partes por bilhão)") + ylab("Velocidade do vento (milhas por hora)") ``` -- <!-- --> --- # Gráfico de linha e pontos ```r library(ggplot2) ggplot(airquality, aes(x = Ozone, y = Wind)) + geom_line() + geom_point() + xlab("Ozônio (partes por bilhão)") + ylab("Velocidade do vento (milhas por hora)") ``` ``` ## Warning: Removed 37 row(s) containing missing values (geom_path). ``` ``` ## Warning: Removed 37 rows containing missing values (geom_point). ``` <!-- --> --- ## Histograma --- ## Boxplot ```r ggplot(airquality, aes(x = factor(Month), y = Temp)) + geom_boxplot() + xlab("Meses") + ylab("Temperatura (ºF)") ``` <!-- --> --- ## Gráfico de barras --- ## Gráfico de barras agrupado --- ## Salvando os seus gráficos externamente --- # Exercícios - Pacotes