~~NOTOC~~
Linguagem de Programação S
Fundamentos e Aplicações em Recursos Florestais
{{ :pt:cursos_online:s_linguagem:s-language-s3.png?50 |}}
5. Noções de Programação
------------------------------------------------------------------------ ====== 5.2. Funções Simples ====== ===== 5.2.1. A Estrutura Básica de uma Função ===== ----------------------------------- Toda manipulação de dados e análises gráficas ou estatísticas no R são realizadas através de funções. Entretanto, você não precisa ser um programador experimentado para construir algumas funções simples para facilitar a atividade de manipulação de dados. A estrutura básica de uma função é: ###################################################### 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 \\