Ferramentas do usuário

Ferramentas do site


02_tutoriais:tutorial8:start

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
02_tutoriais:tutorial8:start [2022/06/26 13:50]
adalardo [FAZENDO VERSÕES PIORADAS DE FUNÇÕES EXISTENTES!!!!]
02_tutoriais:tutorial8:start [2024/09/13 16:05] (atual)
Linha 43: Linha 43:
 A primeira etapa é definir qual o tipo de objetos que a função irá manipular e designar um nome a esse objeto como um argumento. No caso da média podemos definir esse objeto como um vetor numérico ''​x''​. Em seguida precisamos definir o algoritmo que será executado. Uma forma de fazer isso é através de um pseudocódigo que é a descrição literal do algoritmo. ​ A primeira etapa é definir qual o tipo de objetos que a função irá manipular e designar um nome a esse objeto como um argumento. No caso da média podemos definir esse objeto como um vetor numérico ''​x''​. Em seguida precisamos definir o algoritmo que será executado. Uma forma de fazer isso é através de um pseudocódigo que é a descrição literal do algoritmo. ​
 No nosso caso: No nosso caso:
 +
 <WRAP center round box 60%> <WRAP center round box 60%>
-**Pseudocodigo ''​media''​+**Pseudocodigo ''​media'' ​**
   - recebe um vetor ''​x''​   - recebe um vetor ''​x''​
   - soma os valores do vetor no objeto ''​soma''​   - soma os valores do vetor no objeto ''​soma''​
   - guarda o tamanho do vetor ''​x''​ em ''​nobs''​   - guarda o tamanho do vetor ''​x''​ em ''​nobs''​
   - divide ''​soma''​ por ''​nobs''​ e guarda no objeto ''​media''​   - divide ''​soma''​ por ''​nobs''​ e guarda no objeto ''​media''​
-  - retorna o objeto ''​med''​+  - retorna o objeto ''​media''​
 </​WRAP>​ </​WRAP>​
    
  
  
-Depois de definir o que a função conterá, precisamos abrir um  bloco de código para conter as linhas de comando que definem o algoritmo com as chaves ''​{ }''​. Em seguida colocamos as linhas de comando descritas no pseudocodigo e rodamos todo o bloco para construir ​a função, como abaixo:+Depois de definir o que a função conterá, precisamos abrir um  bloco de código para conter as linhas de comando que definem o algoritmo com as chaves ''​{ }''​. Em seguida colocamos as linhas de comando descritas no pseudocodigo e rodamos todo o bloco de código desde atribuição da função ​a um nome para construir um objeto da classe ''​function''​ na nossa área de trabalho. ​ Rode o código ​abaixo ​e cheque se houve a construção do objeto ''​media''​ e qual a classe desse objeto:
  
- 
-Uma funções muito simples 
  
 <code rsplus> <code rsplus>
Linha 64: Linha 63:
  soma <- sum(x)  soma <- sum(x)
  nobs <- length(x)  nobs <- length(x)
- med <- soma/nobs + media <- soma/nobs 
- return(med)+ return(media)
  }  }
 </​code>​  </​code>​
Linha 76: Linha 75:
 ===== Testando a função ===== ===== Testando a função =====
    
 +Para testar a função que acabamos de fazer, utilizamos ela da mesma maneira que as outras funções que usamos até agora. Com a diferença que esta não tem a documentação que as funções de pacotes precisam ter para poderem ser disponibilizadas no repositório do R. Rode os códigos abaixo para ver a sua função em atividade:
 +
 <code rsplus> <code rsplus>
  
 ls() ls()
 +class(media)
 media media
 media() media()
 +help(media)
 dados <- rnorm(20, 2, 1) dados <- rnorm(20, 2, 1)
 media(dados) media(dados)
Linha 101: Linha 104:
 A função padrão do R (''​mean()''​) não calcula a média quando há ''​NA''​ no vetor de dados, a menos que o usuário utilize ​ o argumento ''​na.rm = TRUE''​. A função padrão do R (''​mean()''​) não calcula a média quando há ''​NA''​ no vetor de dados, a menos que o usuário utilize ​ o argumento ''​na.rm = TRUE''​.
 Vamos construir uma função que diferente da função padrão, calcule a média na presença de ''​NA''​ e imprima na tela uma mensagem sobre o número de ''​NA''​ removidos do cálculo. ​ Vamos construir uma função que diferente da função padrão, calcule a média na presença de ''​NA''​ e imprima na tela uma mensagem sobre o número de ''​NA''​ removidos do cálculo. ​
-Note que é uma função com dois argumentos, que permite ao usuário tomar a decisão de remover ou não ''​NA''​. Diferente da função ''​mean()''​ o padrão é invertido, nossa função remove ''​NA''​ se nenhum argumento for mencionado. Note que vamos sobrepor o objeto anterior da classe ''​função'',​ chamado **media**. ​+Note que é uma função com dois argumentos, que permite ao usuário tomar a decisão de remover ou não ''​NA''​. Diferente da função ''​mean()''​ o padrão é invertido, nossa função remove ''​NA''​ se nenhum argumento for mencionado. Note que vamos sobrepor o objeto anterior da classe ''​function'',​ chamado **media**. ​
  
  
Linha 282: Linha 285:
 sum(dados.pois20) ## a somatória aqui sempre dará 131, somente porque a semente é a mesma sum(dados.pois20) ## a somatória aqui sempre dará 131, somente porque a semente é a mesma
 set.seed(22) set.seed(22)
-dados.norm20<​-rnorm(20,​mean=6,​ sd=2) ## sorteia 20 dados de uma função normal com média 6 e dp = 1+dados.norm20<​-rnorm(20,​mean=6,​ sd=2) ## sorteia 20 dados de uma função normal com média 6 e dp = 2
 sum (dados.norm20) ​              ### aqui o resultado dará sempre 130.48 sum (dados.norm20) ​              ### aqui o resultado dará sempre 130.48
  
02_tutoriais/tutorial8/start.1656262252.txt.gz · Última modificação: 2022/06/26 13:50 por adalardo