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



\section{\texorpdfstring{Trabalho Final}{Trabalho Final}}
\label{sec:trabalho_final}


\paragraph{\texorpdfstring{Arquivo Da Função}{Arquivo Da Funao}}
\label{sec:arquivo_da_funao}


 \href{media/bie5782/01_curso_atual/alunos/trabalho_final/moreno_pereira/funcao_bci.r}{Função BCI}

\paragraph{\texorpdfstring{Código da Função}{Codigo da Funao}}
\label{sec:codigo_da_funao}
\lstset{frame=single}
\begin{lstlisting}
 
#####FUNÇÃO BCI por Moreno Pereira #############
##########################################################
##########################################################

BCI<-function(baleias, ad=TRUE, Megaptera=FALSE, rmNA=FALSE) #Nomeando a função e seus argumentos
{
  if(class(baleias)!="data.frame") #verificia se o objeto é um data.frame 
  { 
    stop("o objeto não é um data.frame") #para a função e emite o aviso que a classe não é data.frame
  } 
  if(ncol(baleias) < 5)  # Verifica o número de colunas do data frame
  {
  stop("número de colunas insuficiente") #emite aviso caso o número de colunas não seja o suficiente
  }
if(is.null(baleias$Especie)) # verifica se a tabela de dados nao posui uma coluna chamada "Especie"
{
  stop("seu objeto precisa da coluna Especie") #emite um aviso de que o objeto precisa da coluna "Especie"
  }
    if (length(baleias[,3])!=length(baleias[,4])) #verifica se as colunas tem mesmo comprimento
  { 
    stop("as colunas não possuem o mesmo tamanho") #emite aviso caso não tenham mesmo comprimento
  } 
if(Megaptera==TRUE) #caso o usuário queira calcular o índice apenas para o gênero do artigo base (Megaptera)
{
  baleias<-baleias[which(baleias$Especie=="Megaptera"),] #recria o objeto apenas com o gênero Megaptera 
}
if(rmNA==TRUE) # se o data.frame tiver NAs para serem removidos
{
  baleias <- (na.omit(baleias)) # cria o objeto novamente sem NA
  } 
######calculo de BCI####
baleias[,2]<-as.factor(baleias[,2]) #transforma a coluna de individuos na classe de fatores
  
cond<-tapply(baleias[,3]/2*baleias[,4]+baleias[,5],baleias[,2],FUN=sum)#calcula a condição corporal dos animais

adultos<-cond[which(cond>8)] #coloca no objeto adultos apenas animais com BCI maiores que 8 
imaturos<-cond[which(cond<8)] #coloca no objeto imaturos apenas animais com BCI menores que 8 
  if(ad==TRUE){return(adultos) #retorna apenas a classe adultos caso o usuário queira trabalhar só com esssa classe
  }
else{ return(imaturos) #retorna apenas a classe imaturos caso o usuário queira trabalhar só com esssa classe
}}

\end{lstlisting}



\paragraph{\texorpdfstring{Arquivo Help da função}{Arquivo Help da funao}}
\label{sec:arquivo_help_da_funao}


\href{media/bie5782/01_curso_atual/alunos/trabalho_final/moreno_pereira/help_funcao.docx}{Help BCI}
\href{media/bie5782/01_curso_atual/alunos/trabalho_final/moreno_pereira/help_bci.txt}{Help BCI}

\paragraph{\texorpdfstring{Página de Help da função BCI}{Pagina de Help da funao BCI}}
\label{sec:pagina_de_help_da_funao_bci}
\lstset{frame=single}
\begin{lstlisting}

BCI               package:unknown                R Documentation

ÍNDICE DE CONDIÇÃO CORPÓREA EM CETÁCEOS (BCI)

Description:

     A função calcula o índice de condição corpórea (Body Condition Index) de grandes cetáceos (a partir de medidas feitas por sobrevoo de drones) e classifica os animais em adultos ou imaturos de acordo com esse índice.

Usage:

     BCI (baleias, ad=TRUE, Megaptera=FALSE, rmNA=FALSE)

Arguments:

 baleias: objeto da classe data.frame que contenha pelo menos 5 colunas de dados

 ad: argumento lógico. Se TRUE retorna um array com os indivíduos da classe adulto e seus respectivos índices. Se FALSE retorna um array com os indivíduos da classe imaturo e seus respectivos índices

Megaptera: argumento lógico. Se TRUE irá trabalhar apenas com os animais do gênero do artigo base (Megaptera). Se FALSE irá trabalhar com todos os gêneros disponíveis na planilha

rmNA: argumento lógico. Se TRUE exclui as linhas contendo NAs. Se FALSE mantém as linhas com NAs nos cálculos
 
Details:
     O cálculo de índice de condição corpórea é feito dividindo a superfície do corpo do animal em segmentos trapezoidais e fazendo a somatória da área desses segmentos. Sendo assim o data.frame precisa de medidas especificas em metros para serem realizados os cálculos

     Como a função trabalha com medidas específicas é necessário que o objeto de entrada data.frame contenha nas colunas 3, 4 e 5 as medidas de altura, base menor e base maior do segmento trapezoidal respectivamente para o cálculo correto das áreas e dos índices. O data.frame também deve conter uma coluna chamada “Especie" para que o usuário possa utilizar o argumento “Megaptera". 

Value:

     Retorna um array com a classe, os indivíduos e seus respectivos índices de condição corpórea. 

Warning:

Caso a data frame não contenha uma coluna chamada “Especie" a função não irá ser executada, bem como se as colunas não tiverem o mesmo comprimento ou se o número de colunas do data.frame for menor do que 5.

Author(s):
Moreno Pereira
Email: moreno_pereira@hotmail.com

References:
     Christiansen, F., A. M. Dujon, K. R. Sprogis, J. P. Y. Arnould, and L. Bejder. 2016. Noninvasive unmanned aerial vehicle provides estimates of the energetic cost of reproduction in humpback whales. Ecosphere 7(10):e01468.
10.1002/ecs2.1468

See Also:
Como é calculado o índice de condição corpórea na página 6 do artigo acima
   
Examples:

#Exemplo com saída apenas de “imaturos"
BCI (dados, ad=FALSE, Megaptera=TRUE, rmNA=FALSE)     

#Exemplo utilizando todas as espécies dos dados
BCI (dados, ad=FALSE, Megaptera=FALSE, rmNA=FALSE)
\end{lstlisting}



\paragraph{\texorpdfstring{Arquivo para testar a função}{Arquivo para testar a funao}}
\label{sec:arquivo_para_testar_a_funao}


\href{media/bie5782/01_curso_atual/alunos/trabalho_final/moreno_pereira/tester.csv}{Arquivo para testar a função BCI}

\end{document}
