\documentclass[a4paper, oneside, 10pt]{article}
\usepackage[unicode]{hyperref}
\usepackage[utf8x]{inputenc}
\usepackage[english]{babel}
\usepackage{listings}
\date{\today}
\title{}
\author{}
\begin{document}



\underline{\textbf{Função final:}}

\textbf{Help}\lstset{frame=single}
\begin{lstlisting}

biomassa.bd          package: nenhum        R Documentation


Cálculo da biomassa de árvores da floresta atlântica 


Descrição:

Calcula a equação de biomassa de árvores de floresta de mata atlântica, a partir das 
circunferências e alturas dos individuos vegetais localizados em um data.frame e difencia esses 
resultados para cada tipo de estágio de floresta (inicial e intermediária-tardia). Segundo as 
necessidades do usuário, também gera de forma opcional um gráfico básico de diagnóstico (boxplot) 
e um modelo de regressão linear.


Uso:

biomassa.bd<-function(x,y,z,grafico=T) 


Argumentos:

x: variável de classe numérica. Faz referência a uma coluna com dados contida em um data.frame, 
os quais correspondem a medidas de circunferência das árvores em formato centímetro (cm).  

y: variável de classe numérica. Faz referência a uma coluna com dados contida em um data.frame, 
os quais correspondem a medidas de altura das árvores em formato metros (m).  

z: variável de classe factor. Faz referência a outra coluna contida em um data.frame, cujos 
valores correspondem a um tipo de estágio de floresta.

grafico: base para geração de gráfico. No caso (TRUE) gerará um boxplot e o modelo de regressão 
linear, se (FALSE) não gerará os gráficos.


Detalhes:

Para que os cálculos das equações e a geração dos gráficos sejam realizados corretamente, o 
preenchimento dos dados no data.frame deverão seguir as seguintes pautas:

-O data.frame deve apresentar valores em todas as linhas. Se houvesse presência de NAs, a função
não se efetua.

-A coluna com os valores que apresentem as categorias dos estagios sucessionais terá que estar 
nomeada como "estagios" na planilha que será importada ao software R.
     
Como parte do resultado, a função retornará um data.frame com as variáveis na seguinte ordem: 
"Estagios", "Circunferencia", "Altura", "DAP", "Biomassa".


Valor:

Se grafico=T, a função gera um gráfico boxplot que analisa a biomassa para cada tipo de estágio de 
floresta e um modelo de regressão linear que relaciona o DAP calculado com a altura para cada 
indivíduo vegetativo e retorna um data.frame com duas colunas adicionadas, resultado dos cálculos 
das equações. Se gráfico=F, a função retornará apenas o data.frame. As duas colunas a ser adicionadas 
correspondem a: 

	DAP		resultado da equação do DAP na unidade (cm): DAP = circunferência/pi 

	Biomassa	resultado da equação proposta por Burger & Delitti (2008) nas unidades 
			(Mg/hectare) para calcular a biomassa de árvores na floresta de mata 
                        atlântica: LnDW = -3.676+0.951Lnd^2h


Avisos:

A função é interrompida quando os argumentos "x" e "y" não são da classe numérica e/ou o argumento 
"z" da classe factor. Quando a função gera o data.frame, retornará o aviso de se os gráficos são 
ou não gerados, dependendo da opção do argumento "gráfico" que o usuario escolheu.
Os cálculos das equações DAP e Biomassa são realizados independientemente da quantidade de parâmetros 
disponíveis no data.frame, mas o usuário deve adequar as colunas que corresponderiam aos argumentos 
"x", "y" e "z" na planilha antes de importá-la para o software R. 
Para que o cálculo seja realizado corretamente, o argumento "x" terá que corresponder na planilha à 
coluna dos dados referente à circunferência em formato cm, o argumento "y" corresponderá à coluna da 
altura em metros e, o argumento "z", à coluna das categorias dos estágios sucessionais da floresta em 
estudo. 
A função realizará a transformação da escala métrica do resultado da Biomassa de kg por metro 
cuadrado diretamente a Mg por hectare, como recomendado por Burger & Delitti (2008).


Autora:

   Susana López Caracena - Instituto de Biociências USP
   selc@usp.br


Referências:

-Burger, D.M. & Delitti, W.B.C. 2008. Modelos alométricos para estimativa de fitomassa de Floresta 
Atlântica secundária no sudeste do Brasil. Biota Neotrop., 8(4)


Exemplo 1:

dados<-read.csv("dados_fun.csv", sep=";",dec=",")  #Importa-se a planilha exemplo "dados"
x<-dados$circunferencia  #Objeto x recebe os valores que correspondem à coluna dos dados da circunferência 
(cm) da planilha exemplo "dados"
y<-dados$altura #Objeto y recebe os valores que correspondem à coluna dos dados da altura (m) da planilha 
z<-dados$estagios #Objeto z recebe as categorias que correspondem à coluna dos estágios sucessionais da 
floresta em estudo da planilha 
biomassa.bd(dados$circunferencia,dados$altura, dados$estagios, grafico="T") #Testa-se a função, indicando 
a opção de retorno do fataframe com gráficos

Exemplo 2:

dados<-read.csv("dados_fun.csv", sep=";",dec=",")
x<-dados$circunferencia 
y<-dados$altura 
z<-dados$estagios 
biomassa.bd(dados$circunferencia,dados$altura, dados$estagios, grafico="F") #Testa-se a função, indicando 
a opção de retorno do fataframe sem gráficos.
\end{lstlisting}



\textbf{Código}

Para testar a função, por favor salve o arquivo: \href{media/bie5782/01_curso_atual/alunos/trabalho_final/selc/funcao_final/dados_fun.csv}{dados\_fun.csv}\lstset{frame=single}
\begin{lstlisting}

biomassa.bd<-function(x,y,z,grafico=F)  
{
  if(class(x)!="numeric") stop ("x precisa ser da classe numérica") #A função avisará se a variável "x" não é de classe numérica, neste caso a função dará o seguinte aviso: "x precisa ser da classe numérica"
  if(class(y)!="numeric") stop ("y precisa ser da classe numérica") #A função avisará se a variável "y" não é de classe numérica, neste caso a função dará o seguinte aviso: "y precisa ser da classe numérica"
  if(class(z)!="factor") stop ("z precisa ser da classe factor")    #A função avisará se a variável "z" não é de classe numérica, neste caso a função dará o seguinte aviso: "z precisa ser da classe factor"
  {                                                                 #Abro chave onde será escrita a função
  if(grafico=="T")                                         #Utilizo o comando if com o opcional else para executar códigos de maneira condicional. Dentro do parênteses conterá uma condição lógica, que terá como resultado TRUE para que a função gere os gráficos boxplot e o modelo de regressão linear
   {                                                       #Abro chave onde será escrito o bloco de códigos que será executado se a condição do parênteses for TRUE
    cat("\t Os gráficos são gerados\n")                    #No caso de que na função seja escrito grafico=T, o resultado da função dará o seguinte aviso: "Os gráficos são gerados" 
    dap <- (x/pi)                                          #Equação para calcular o DAP (diámetro à altura do peito) a partir da circunferência "x" 
    biomas <- exp(-3.676+0.951*log(dap^2*y))               #Cálculo da equação de biomassa (Burger&Delitti,2008), com as informações de DAP e altura "y". Equação: LnDW = -3.676+0.951LnD^2h
    biomassa <- biomas*10                                  #O resultado da equação da biomassa dado em kg/m2 é transformado nas unidades de Mg/hectare
    resultado <- data.frame(z, x, y, dap, biomassa)        #Incluimos que sejam adicionadas ao dataframe existente as novas informações calculadas (DAP e biomassa)
    colnames(resultado) <- c("Estagios","Circunferencia", "Altura", "DAP","Biomassa")      #Nomeamos novamente os objetos do dataframe
    par(mfrow=c(1,2))                                      #Utilizo a função par para construir uma figura onde apareça o gráfico boxplot e o modelo de regressão linear 
    par(bty="l", family="serif", tcl=0.4)
    boxplot(resultado$Biomassa~resultado$Estagios, ylab = "Biomassa", names = (levels(dados$estagios)))       #Gero o gráfico boxplot para apresentar a biomassa por categorias de estágio de floresta (inicial e intermediária-tardia)
    plot(dap~y, bty="l", tcl=0.3, xlab = "Altura" ,ylab = "DAP")                          #Plota "DAP" em função da altura "y"
    m.lin<-lm(dap~y)                                       #Gera o modelo de regressão linear através da funçao lm
    abline(m.lin, col="red", lwd = 2)                      #Com a função abline gera a reta da função
    return(resultado)                                      #Gera o dataframe com as novas colunas calculadas (DAP e biomassa) e cria os dois gráficos
    }else                                                  #O opcional else executará os comandos que não gerarão gráficos no caso de que a condiçã seja FALSE
    {                                                      #Abro chave onde será escrito o bloco de códigos que serão executados se a condição do parênteses for FALSE
   cat("\tOs gráficos não são gerados\n")                  #No caso de que na função seja escrito grafico=F, o resultado da função dará o seguinte aviso: "Os gráficos não são gerados"
   dap <- (x/pi)                                           #Equação para calcular o DAP 
   biomas <- exp(-3.676+0.951*log(dap^2*y))                #Cálculo da equação de biomassa (Burger&Delitti,2008)
   biomassa <- biomas*10                                   #O resultado da equação é transformado nas unidades de Mg/hectare
   resultado <- data.frame(z, x, y, dap, biomassa)         #Incluimos que sejam adicionadas ao dataframe existente as novas informações calculadas (DAP e biomassa)
   colnames(resultado) <- c("Estagios","Circunferencia", "Altura", "DAP","Biomassa")     #Nomeamos novamente os objetos do dataframe
   return(resultado)                                       #Fecha a função biomassa.bd() mostrando o dataframe com as novas coluna na tabela
 }}}
\end{lstlisting}



\end{document}
