<jupyter_start><jupyter_text>Funções mais utilizadas:-  `c()` para criar vetor-  `class()` para saber qual classe do objeto-  `is.na()`, `is.nan()`, `is.infinite()`, `is.null` usado para saber se o valor é `NA`, `NaN`, infinito ou `NULL`<jupyter_code>c(1,2,3)
sum(1,2)
sum(c(2,5))
#Calcular a média de uma coluna
mean(mtcars$mpg)
#Fazer calculos quando tiver valores NA, passar na.rm
mean(c(2,4,NA), na.rm = TRUE)
#Para saber detalhes sobre uma função, passe o nome dela dentro da função help
help(mean)
#É possivel usar uma função com ou sem o nome dos argumentos
seq(from = 4, to = 10, by = 2)
seq(4,10,2)<jupyter_output><empty_output><jupyter_text>Funções úteis para trabalhar com data frame:- `head()` - Mostra as primeiras 6 linhas.- `tail()` - Mostra as últimas 6 linhas.- `dim()` - Número de linhas e de colunas.- `names()` - Os nomes das colunas (variáveis).- `str()` - Estrutura do data frame. Mostra, entre outras coisas, as classes de cada coluna.- `cbind()` - Acopla duas tabelas lado a lado.- `rbind()` - Empilha duas tabelas.<jupyter_code>#É possivel criar sua própria função

nome_da_função  <- function(argumento_1, argumento_2){
    #código que a função irá executar
}
#Exemplo de uma função criada

minha_soma  <- function(x,y) {
    soma  <- x + y
    soma #resultado retornado
}

minha_soma(2,2)
resultado  <- minha_soma(4,4)
resultado
minha_nova_soma  <- function(x, y) {
    soma  <- x + y
}
#Não é possivel visualizar o resultado, a não ser que coloque a função dentro de uma variável
minha_nova_soma(2,3)
resultado  <- minha_nova_soma(2,3)
resultado<jupyter_output><empty_output><jupyter_text>Exercícios1. Qual dos códigos abaixo devolverá um erro se for avaliado?a.  3 * 5 + 10b.  function  <- 10c.  mean(1, 10)d.  (soma <- sum(1, 1))<jupyter_code>3*5 + 10
function  <-  10
mean(1,10)
#Não retorna erro, mas o correto deveria ser
#mean(c(1,10))
(soma  <- sum(1,1))<jupyter_output><empty_output><jupyter_text>2. Crie uma função que receba um número e retorne o quadrado deste número.<jupyter_code>quadrado  <- function(x) {
    quad  <- x^2
    quad
}

quadrado(5)<jupyter_output><empty_output><jupyter_text>3. Crie uma função que receba 2 números e devolva a raiz quadrada da soma desses números.<jupyter_code>raiz_quadrada  <- function(x,y) {
    rq  <- sqrt(x+y)
    rq
}
raiz_quadrada(10,15)<jupyter_output><empty_output><jupyter_text>4. Crie uma função que receba dois valores (numéricos) e devolva o maior deles.<jupyter_code>maior_numero  <- function(x,y){
    maior  <- max(x,y)
    maior
}
maior_numero(5, 2)

#Outro jeito
#retornar_maior <- function(x, y) {
#  vetor <- c(x, y)
#  filtro <- c(x > y, x <= y)
#  vetor[filtro]
#}<jupyter_output><empty_output><jupyter_text>5. Use a função `runif()` para criar uma função que retorne um número aleatório inteiro entre 0 e 10 (0 e 10 inclusive). Caso você não conheça a função runif(), rode help(runif) para ler a sua documentação.<jupyter_code>aleatorio  <- function(){
    numero  <- runif(1, min = 0, max = 10)
    numero_inteiro  <- round(numero)
    return(numero_inteiro)
}
aleatorio()<jupyter_output><empty_output><jupyter_text>6. Rode help(sample) para descobrir o que a função sample() faz. Em seguida    a. use-a para escrever uma função que devolva uma linha aleatória de um data frame;<jupyter_code>#devolve uma linha aleatoria do data frame
help(sample)
linha_aleatoria  <- function(df) {
    num_linhas  <- nrow(df)
    linha_sorteada  <- sample(1:num_linhas, 1)
    df[linha_sorteada,]
}
linha_aleatoria(mtcars)<jupyter_output><empty_output><jupyter_text>b. generalize a função para retornar um número qualquer de linhas, escolhido pelo usuário.<jupyter_code>linha_aleatoria  <- function(df, n) {
    num_linhas  <- nrow(df)
    linha_sorteada  <- sample(1:num_linhas, n)
    df[linha_sorteada,]
}
linha_aleatoria(mtcars, 2)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.12392829306313329, 'fraction_numerical': 0.02156404260846973, 'mean_word_length': 4.604075691411936, 'pattern_counts': {'":': 0, '<': 67, '<?xml version=': 0, '>': 38, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '9', 'dir': 'jupyter-structured-clean-dedup', 'id': '594284', 'license': 'MIT', 'n_tokens_mistral': 1663, 'n_tokens_neox': 1568, 'n_words': 419, 'path': 'mais_sobre_funcoes.ipynb', 'repo_name': 'anicelysantos/tutorial_r', 'size': '3849'}