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



\textless code\textgreater 
\{
\begin{verbatim}
optimum<- function(x,y) {
if(is.matrix(x)==FALSE) #Teste lógico para saber se o objeto de entrada é uma matriz.
{
  stop("O objeto não é uma matriz") #Mensagem caso o objeto não seja uma matriz.
}
if(is.matrix(y)==FALSE) #Teste lógico para saber se o objeto de entrada é uma matriz.
{
  stop("O objeto não é uma matriz")
}
if(nrow(x)!=nrow(y)) #Teste para saber se as matrizes tem o mesmo número de linhas
{
  stop("As matrizes devem ter o mesmo número de linhas")
}
matriz.optimum<- matrix(NA, nrow=ncol(x), ncol=ncol(y), dimnames=list(colnames(x), colnames(y))) #Cria uma matriz para guardar os valores de ótimo ecológico que vão ser calculados. Os nomes das linhas serão os nomes das espécies e o nome das colunas serão os nomes das variáveis.
matriz.tolerance<- matrix(NA, nrow=ncol(x), ncol=ncol(y), dimnames=list(colnames(x), colnames(y)))#Cria uma matriz para guardar os valores de tolerância ecológica que vão ser calculados. Os nomes das linhas serão os nomes das espécies e o nome das colunas serão os nomes das variáveis.

for(i in 1:ncol(x)) #Fazendo uma série de loopings para dar início ao cálculo do ótimo. Aqui os valores da matriz de abundância serão acessados. 
{
  for(j in 1:ncol(y)) #Fazendo uma série de loopings o cálculo do ótimo. Aqui os valores da matriz de variáveis serão acessados. 
  {
    matriz.optimum[i,j]<-weighted.mean(y[,j],x[,i]) #Calculo do ótimo utilizando a função da média ponderada (weighted.media) o segundo conjunto de dados tem que ser aquele que vai fornecer o peso para a média ponderada. Assim, se a ordem de entrada das matrizes for alterada, o valor será alterado também. Para o cálculo do ótimo, o conjunto de valores que forncem o peso para a média ponderada são os valores das abundâncias. 
  }  
}

for(i in 1:ncol(x)) #Fazendo uma série de loopings para dar início ao da tolerância. Aqui os valores da matriz de abundância serão acessados.
  {
  for(j in 1:ncol(y)) #Fazendo uma série de loopings para dar início ao cálculo da tolerância. Aqui os valores da matriz de abundância serão acessados.
  {
    matriz.tolerance[i,j]<-((sum(x[,i]*(y[,j]-weighted.mean(y[,j],x[,i]))^2))/sum(x[,i]))^0.5 ##Calculo da tolerância ecológica. 
  }
}
{ optimum.tolerance<-array(c(matriz.optimum,matriz.tolerance),dim=c(ncol(x),ncol(y),2),dimnames=list(colnames(x),colnames(y),c("Ótimo Ecológico","Tolerância Ecológica"))) #Array com os dados do ótimo e da tolerância será o retorno da função. 
for(i in 1:ncol(y)) #Fazendo uma série de loopings para a saída gráfica de cada espécie. Aqui acessará os dados para o eixo x que são os valores das variáveis.
    {
      for(j in 1:ncol(x)) #Fazendo uma série de loopings para a saída gráfica de cada espécie. Aqui acessará os dados para o eixo y que são os valores das abundâncias.
      {
        names.axis.x<- colnames(y) #criando um objeto para dar nomes ao eixo x
        names.axis.y<- colnames(x) #criando um objeto para dar nomes ao eixo y
        plot(y[,i],x[,j],ylim=c(0,max(x)),xlab=names.axis.x[i],ylab=names.axis.y[j]) #Plota um gráfico de distribuição das espécies em relação à variável analisada.
        var.range<- min(y[,i]):max(y[,i]) #objeto para guardar os valores entre mínimo da variável ambiental e máxima da variável ambiental para ser utilizada na equação de regressão da curva.
        yA<- (max(x[,j]))*exp(-0.5*(var.range - matriz.optimum[j,i])^2/matriz.tolerance[j,i]^2) #Regressão para plotar a curva no gráfico. 
        lines(var.range,yA,lty=1,col="black") #Plota a curva da regressão na cor preta. 
        abline(v=matriz.optimum[j,i],lty=2) #Plota uma linha pontilhada mostrando o valor do ótimo ambiental.
        valor.optimum<-paste("u =",as.character(round(matriz.optimum[j,i],2)),sep=" ") # valor do ótimo ambiental
        text(0.7*max(y),max(x), labels=valor.optimum) #Plota o valor do ótimo na área do gráfico
        }
    }
  }

return(optimum.tolerance) #Retorno da Função é um array com o ótimo e a tolerância de cada espécie para cada variável.
\end{verbatim}


\} \#\#FIM!
\}
\begin{verbatim}
<\code>
\end{verbatim}

\begin{verbatim}
optimum(x, y) 
\end{verbatim}


\textbf{Help da Função}

Ótimo               package:unknown                R Documentation

Cáculo do Ótimo ecológico e da tolerância ecológica de espécies.
\begin{verbatim}

Description:

A função calcula o ótimo ecológico e a tolerância ecológica de espécies em relação a variáveis ambientais de interesse. Para isso utiliza-se uma matriz de abundância e uma matriz com os valores das variáveis ambientais de interesse. A função retorna os resultados em um array e um gráfico com o ótimo de cada espécie.

Usage:

\end{verbatim}


optimum(x,y)
\begin{verbatim}

Arguments:

\end{verbatim}


 x matriz com os dados de abundância ou densidade das espécies
 y matriz com os dados para variável ambiental
\begin{verbatim}

Details:

\end{verbatim}


 A matriz (x) de abundância ou de densidade de espécies deve apresentar as espécies nas colunas. 
 A matriz (y) com as variáveis ambientais deve apresentar as variáveis em cada coluna.
 Ambas as matrizes devem ter o mesmo número de linhas.
 A função aceita valores de zero.
 A função não aceita NAs.
\begin{verbatim}

Value:

A função retorna no Console duas matrizes em um objeto de array.
A primeira matriz trará os valores dos ótimos ecológicos de cada espécie. A segunda matriz trará os valores de tolerância ecológica de cada espécie. Nas linhas estarão as espécies e nas colunas as variáveis ambientais.
Se o objeto não for uma matriz, a função retornará uma mensagem de aviso.
Se as matrizes não tiverem o mesmo número de linhas, a função retornará um aviso.

\end{verbatim}


Warning:
\begin{verbatim}

Se houver mais de 100 espécies, a função não retornará todos os gráficos.
\end{verbatim}

\begin{verbatim}
Author(s):

\end{verbatim}


 Angela Maria da Silva Lehmkuhl
 e-mail: angela\_ecologia@yahoo.com.br
\begin{verbatim}

References:
  Crawley, M. 2007. The R book.  John Wiley & Sons Ltd, England.
  Ter Braak, C.J.F e Van Dam, H (1989). Inferring ph from diatoms: a comparison of old and new calibration methods. Hydrobiologia 178:209-223.
  
Examples:
x<- matrix(sample(c(seq(from=10, to=1000, length=10), seq(from=1, to=100, length=10), seq(from=50, to=500, length=10))), nrow=10, ncol=3, dimnames=list(c(1:10), c("sp1","sp2", "sp3"))) #Matriz de aundância de espécies
y<- matrix(sample(round(c(seq(from=0.2, to=200, length = 10), seq(from=3.0, to=8.0, length = 10 )))), nrow=10, ncol=2, dimnames=list(c(1:10),c("var1", "var2"))) #Matriz das variáveis ambientais
\end{verbatim}


\end{document}
