~~NOTOC~~
######################################################
2 ########### 5 NOÇÕES DE PROGRAMAÇÃO
3 ########### 5.2 Funções Simples
4 ######################################################
5 # 5.2.1. A Estrutura Básica de uma Função
6
7 minha.funcao <- function( argumento1, argumento2, argumento3, . . .)
8 {
9 comando 1
10 comando 2
11 comando 3
12 . . .
13 comando n
14 }
15
Os elementos dessa expressão são:
* **''minha.funcao''** é o nome que a nova função receberá;
* **''function''** é a expressão no R que cria uma nova função;
* //__entre os parênteses__// "**''()''**" são listados (separados por vírgula) os argumentos necessários a função;
* //__entre as chaves__// "**''{}''**" são listados os comandos da função, sempre com um comando por linha.
Vejamos um exemplo simpes:
16 sincos <- function(x)
17 {
18 sin(x) * cos(x)
19 }
20 sincos(10)
21 sin(10) * cos(10)
22 sincos(pi)
23 sin(pi) * cos(pi)
24
\\
===== 5.2.2. Definindo Argumentos =====
-----------------------------------
Todos argumentos de uma função tem seu respectivo nome. Ao evocar a função podemos fazê-lo de duas formas:
* utilizando o //__nome__// dos argumentos //__em qualquer ordem__//;
* utilizando a //__ordem__// dos argumentos, mas //__omitindo__// os nomes.
Vejamos um exemplo com os dados do arquivo "{{:pt:cursos_online:s_linguagem:00-dados:egrandis.csv|egrandis.csv}}".
25 # 10.2.2. Definindo Argumentos
26
27 egr = read.csv("egrandis.csv")
28 plot( col="red", pch=2, y=egr$ht, x=egr$dap )
29 plot( egr$dap, egr$ht )
30
Para qualquer argumento podemos definir um //__valor default__// apresentando esse valor junto com argumento na definição da função:
31 myplot <- function(..., cor="red") { plot(..., col=cor) }
32 myplot( egr$dap, egr$ht )
33 myplot( ht ~ dap, data=egr )
34
O exemplo acima também mostra a função do argumento "**''. . .''**". Esse argumento representa //__qualquer argumento adicional__// que desconhecemos, mas que desejamos que seja passado para as funções dentro da função que estamos construindo.
\\
===== 5.2.3. Um Aspecto Prático na Edição de Funções =====
-----------------------------------
É natural se definir funções **particulares a um dado projeto de análise de dados** no próprio "//__script__//" em que se programa a análise.
Contudo, quando se definem diversas funções que serão utilizadas em diferentes **projetos de análise de dados**, é interessante definir as funções num arquivo exclusivo para as funções (p.ex., arquivo "**''minhas-funcoes.R''**"). Esse arquivo é como um //__script__// (mas apenas com as definições das funções) e pode ser editado utilizando a janela de edição de scripts da interface utilizada (p.ex. RStudio). Para ler o arquivo em qualquer sessão do R utiliza-se o comando **''source''**:
35 # 5.2.3. Um Aspecto Prático na Edição de Funções
36
37 source( "minhas-funcoes.R" )
38
\\