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


\begin{itemize}
  \item Tutorial
  \item  Exercícios
  \item  Apostila
  \item TesteTutorial
\end{itemize}


\section{\texorpdfstring{1. Tutoriais de Introdução ao R}{1 Tutoriais de Introduao ao R}}
\label{sec:1_tutoriais_de_introduao_ao_r}


\subsection{\texorpdfstring{Testando o rdrr interativo}{Testando o rdrr interativo}}
\label{sec:testando_o_rdrr_interativo}


\lstset{frame=single, language=HTML}
\begin{lstlisting}

<iframe width='100%' height='400' src='https://rdrr.io/snippets/embed/?code=print(%22Hello%2C%20world!%22)' frameborder='0'></iframe>

\end{lstlisting}



\subsection{\texorpdfstring{Testando o IPython Notebook}{Testando o IPython Notebook}}
\label{sec:testando_o_ipython_notebook}


\lstset{frame=single, language=HTML}
\begin{lstlisting}
<head>


<!-- Load require.js. Delete this if your page already loads require.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" crossorigin="anonymous"></script>
<script src="https://unpkg.com/@jupyter-widgets/html-manager@*/dist/embed-amd.js" crossorigin="anonymous"></script>
<script type="application/vnd.jupyter.widget-state+json">
{
    "version_major": 2,
    "version_minor": 0,
    "state": {}
}
</script>
</head>
<body>


</body>



\end{lstlisting}



\subsection{\texorpdfstring{O Código é Tudo!}{O Codigo e Tudo}}
\label{sec:o_codigo_e_tudo}


Um dos primeiros hábitos que você deve adquirir para trabalhar com o R é \textbf{não digitar os comandos diretamente no R}, e sim em um arquivo texto, que chamamos de \emph{script} ou \emph{código}. Na interface gráfica de usuário (R-GUI) do Windows e do MAC há um editor de códigos, que você pode manter aberto, juntamente com a janela do R.

\emph{\textbf{\underline{Usuário Linux}}}

A instalação do R no LINUX não inclui uma interface como a do Windows ou do MAC, para que o usuário escolha a sua. 

Há várias opções de editores e interfaces de desenvolvimento (IDEs), veja dicas e linques na seção de material de apoio.

Se você usa LINUX, pode seguir este tutorial com qualquer editor ou IDE. 

A figura abaixo é uma captura de tela do R-GUI do Windows, mas no MAC o editor é similar, e você pode manter a mesma lógica.  Deixe sempre uma janela de código aberta acima da janela do R:

\centering\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/02_tutoriais/script_e_r-windows}


Na figura acima há duas janelas com funcionamentos e objetivos muito diferente;
\begin{enumerate}
  \item a janela da parte superior apresenta um arquivo de texto puro que pode ser editado. 
  \item a janela na parte inferior é o prompt do R, ou seja o programa propriamente dito. Essa janela recebe informações que são processadas pelo R e apresenta o resultado final desse processamento\footnote{quando a tarefa solicitada é a representação de um gráfico, uma nova janela é aberta, um dispositivo gráfico}. 
\end{enumerate}


Para evitar confusão e perda de trabalho é importante digitar as informações que serão transmitidas ao R (linhas de código) no arquivo texto e ir passando esses comandos ao R. 
Tenha certeza que entendeu a diferença entre essas duas janelas, mais a frente iremos falar sobre a importância dessa distinção e de não se trabalhar diretamente na janela do R.
É imprescindível aprender a se organizar dentro da lógica do ambiente de programação, com o risco de perder trabalho ou ficar completamente perdido entre as tarefas que executa.
\begin{itemize}
  \item Clique com o botão da direita do mouse no link do \href{media/bie5782/02_tutoriais/regressao.r}{script} e,
  \item Salve o arquivo em uma pasta \footnote{diretório de trabalho é o nome técnico desta pasta para o R} conhecida do seu computador
\end{itemize}


Execute o R e abra o \emph{script} com a opção do menu ,,Arquivo/Abrir script":

\centering\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/02_tutoriais/abrir_script}


Vá para a janela do \emph{script}, coloque o cursor na primeira linha e tecle \texttt{Ctrl-r}. O comando é enviado ao R. Faça o mesmo com as duas linhas seguintes.

 \emph{\textbf{\underline{Para Usuários de MAC}}}

Para enviar comandos do editor de código do R-GUI para o R utilize \emph{Command+Enter} ou \emph{Command+Return}.

Veja o material \url{https://cran.r-project.org/bin/macosx/RMacOSX-FAQ.html}

Selecione as cinco primeiras linhas com o cursor e tecle \texttt{Ctrl-r}. Os comandos são enviados ao R.

\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/02_tutoriais/envia_comando_do_script}


Agora modifique os dados, alterando a segunda e terceira linhas do \emph{script} para:\lstset{frame=single}
\begin{lstlisting}

area <- c(300, 350, 961, 295, 332, 47,  122, 11, 53, 2749)
riqueza <- c(1, 7, 20, 7, 8, 4, 8, 3, 5, 23)
\end{lstlisting}



Salve o \emph{script} com estas modificações. 

\subsubsection{\texorpdfstring{Rodando o script}{Rodando o script}}
\label{sec:rodando_o_script}


Além de poder enviar as linhas de comando é possível submeter o script integralmente para o R. Você pode fazer isto de duas maneiras:
\begin{itemize}
  \item 1. Na janela do editor de código, selecione com o mouse ou marque todo o \emph{script} com ,,Ctrl-a"  e depois envie-o para o R com ,,Ctrl-r"
  \item \textbf{OU}
  \item 2. Na janela do R digite o comando:
\end{itemize}
\lstset{frame=single}
\begin{lstlisting}

source("regressao.r")
\end{lstlisting}



\textbf{OBS:} Este comando só funcionará se o arquivo \emph{regressao.r} estiver no diretório de trabalho, que é o nome técnico da pasta para onde o R está direcionado no seu computador. Caso não esteja, aparecerá uma mensagem de erro dizendo que não é possível abrir a conexão solicitada. A seguir veremos com podemos mudar o diretório de trabalho após abrir uma sessão do R.
\\
Por padrão, o \texttt{source} não mostra na tela os comandos executados nem seus resultados, mas todos os objetos são criados. Verifique os objetos criados por estes comandos no \emph{workspace} do R digitando:\lstset{frame=single}
\begin{lstlisting}

ls()
\end{lstlisting}



Se você quiser ver todos os comandos e resultados use:\lstset{frame=single}
\begin{lstlisting}

source( "regressao.r", echo=TRUE, print.eval=TRUE )
\end{lstlisting}



Consulte a ajuda do comando \texttt{source} para entender os argumentos \texttt{echo} e \texttt{print.eval}.

Agora vamos simular a perda dos objetos: saia do R, respondendo ,,NÃO" à pergunta ,,Salvar Área de Trabalho"\footnote{não faça isto normalmente!!!, detalhes na apostila}.

Abra o R de novo. Tudo perdido? Não! Com o código salvo (script) você pode executá-lo novamente, e recuperar todo o trabalho. Repita o procedimento novamente de abrir o arquivo de script e rodá-lo ;-).

\subsubsection{\texorpdfstring{Escolha seu Editor de Código}{Escolha seu Editor de Codigo}}
\label{sec:escolha_seu_editor_de_codigo}


O editor de códigos do R-GUI  no Windows e no Mac é bastante simples e costuma ser uma boa opção inicial para usuários deste sistema. Para esta disciplina ele é suficiente, mas logo que você se acostume com o R é bom buscar um editor ou ambiente integrado de programação com mais recursos. 

No Linux não uma há uma \href{http://en.wikipedia.org/wiki/GUI}{GUI} padrão para o R, e esta escolha já tem que ser feita no início. 

Ou seja, mais cedo ou mais tarde, terá que avaliar as opções de editores de código ou ambientes de programação e escolher uma que lhe agrade. 

Na página de material de apoio há uma seção com várias \href{http://ecologia.ib.usp.br/bie5782/doku.php?id=bie5782:01_curso_atual:material:start\#interfaces_para_o_r}{dicas sobre interfaces para o R} para lhe ajudar.

\subsection{\texorpdfstring{A Melhor Maneira de Executar o R no Windows}{A Melhor Maneira de Executar o R no Windows}}
\label{sec:a_melhor_maneira_de_executar_o_r_no_windows}


Antes de começar um novo projeto de análise, crie um diretório para ele, com o menu \emph{,,Arquivo/Novo/Pasta"} do windows explorer.

\centering\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/02_tutoriais/cria_pasta_windows}


\centering\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/02_tutoriais/tutorial1/nova_pasta_documentos}


Em seguida execute o R a partir do atalho na área de trabalho ou na barra de ferramentas.

\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/02_tutoriais/clique_atalho_r}
 \includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/02_tutoriais/clique_barra_ferram-r}


Verifique qual é o diretório de trabalho que o R está usando, com o comando:\lstset{frame=single}
\begin{lstlisting}

getwd()
\end{lstlisting}



E você verá que ao abrir o R desta maneira ele sempre começará com um mesmo diretório de trabalho, possivelmente em ,,Meus Documentos", e.g.:\lstset{frame=single}
\begin{lstlisting}

[1] "C:/Documents and Settings/Administrador/Meus documentos"
\end{lstlisting}



Para mudar o diretório de trabalho use:\lstset{frame=single}
\begin{lstlisting}

setwd("C:/Documents and Settings/Administrador/Meus documentos/temp1")
\end{lstlisting}



\textbf{IMPORTANTE:} as barras devem ser no padrão Linux, ou seja, o inverso do usado em Windows.

Verifique se mudança funcionou, com um novo comando \texttt{getwd}:\lstset{frame=single}
\begin{lstlisting}

getwd()
\end{lstlisting}



Se seu diretório de trabalho é o desejado, verifique que está vazio, com o comando:\lstset{frame=single}
\begin{lstlisting}

dir()
\end{lstlisting}



 E também verifique se o \emph{workspace} está vazio com\lstset{frame=single}
\begin{lstlisting}

ls()
\end{lstlisting}



Agora baixe o arquivo \href{media/bie5782/02_tutoriais/letras.rdata}{letras.rdata} para o diretório de trabalho, e carregue-o no \emph{workspace} do R com o comando: \lstset{frame=single}
\begin{lstlisting}

load("letras.rdata")
\end{lstlisting}



Verifique agora seu workspace, e salve-o:\lstset{frame=single}
\begin{lstlisting}

ls()
save.image()
\end{lstlisting}



Crie alguns outros objetos em seu \emph{workspace}:\lstset{frame=single}
\begin{lstlisting}

pares <- c(2,4,6,8)
impares <- c(1,3,5,7,9)
todos.os.numeros <- c(pares,impares)
\end{lstlisting}



Agora saia do R, tomando o cuidado de salvar de novo seu \emph{workspace}.

Para trabalhar novamente no mesmo projeto, abra o diretório correspondente com o Windows Explorer e clique no arquivo \texttt{.RData}:

\centering\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/02_tutoriais/diretorio_com_rdata}


\centering\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/02_tutoriais/tutorial1/arquivos_gerados}


\textbf{IMPORTANTE:} certifique-se de que o diretório está com a opção de exibir arquivos ocultos, ou você não verá o arquivo \texttt{.RData}:

\centering\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/02_tutoriais/ligar_mostrar_arquivos_ocultos_windows}


\centering\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/02_tutoriais/tutorial1/arquivos_ocultos}


Verifique se todos os objetos da última seção estão em seu \emph{workspace}:\lstset{frame=single}
\begin{lstlisting}

ls()
\end{lstlisting}



\begin{center}
\line(1,0){250}
\end{center}



Outra solução é criar um atalho para o projeto, indicando o diretório de trabalho na caixa de propriedades do atalho:

\centering\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/02_tutoriais/fazendo_atalho_projeto}


Você pode manter um atalho para cada projeto em andamento em sua área de trabalho.

\emph{\textbf{\underline{Para Usuários de LINUX}}}

Em LINUX não há estes problemas, pois basta executar o R na linha de comando (\emph{shell})  a partir do diretório de trabalho (veja na apostila). 

Com o uso de editores de código fica ainda mais fácil, consulte o guia que há em nosso material de apoio.

\subsection{\texorpdfstring{Criando Objetos}{Criando Objetos}}
\label{sec:criando_objetos}


Os três operadores de atribuição \texttt{\textless }\texttt{-}, \texttt{=} e \texttt{-}\texttt{\textgreater } podem ser usados de várias maneiras para criar objetos. Por exemplo, estes comandos:\lstset{frame=single}
\begin{lstlisting}

a <- 1
b <- a
\end{lstlisting}



São equivalentes a este:\lstset{frame=single}
\begin{lstlisting}

b <- a <- 1
\end{lstlisting}



Ou a este:\lstset{frame=single}
\begin{lstlisting}

a = 1 -> b
\end{lstlisting}



Experimente!

\subsection{\texorpdfstring{Listando e Removendo Objetos}{Listando e Removendo Objetos}}
\label{sec:listando_e_removendo_objetos}


Várias funções retornam resultados mesmo sem que você forneça argumentos. Nestes casos, basta não escrever entre os parênteses. No caso da função \texttt{ls}, por exemplo, você irá obter a lista de todos os objetos em sua área de trabalho:\lstset{frame=single}
\begin{lstlisting}

A1 <- c(1,2,3)
A2 <- c(10,20,30)
b <- c(A1,A2)
ls()
\end{lstlisting}



Consulte a página de ajuda da função ls:\lstset{frame=single}
\begin{lstlisting}

help(ls)
\end{lstlisting}



Onde você verá a explicação para o argumento \texttt{pattern}. Execute, então, este comando:\lstset{frame=single}
\begin{lstlisting}

ls(pattern="A")
\end{lstlisting}



Para mudar os nomes de objetos e apagar os antigos, experimente:\lstset{frame=single}
\begin{lstlisting}

a.1 <- A1
a.2 <- A2
ls()
rm( list=c("A1","A2") )
ls()
\end{lstlisting}



Que tem o mesmo efeito de:\lstset{frame=single}
\begin{lstlisting}

rm(list=ls(pattern="A"))
\end{lstlisting}



Ou de \lstset{frame=single}
\begin{lstlisting}

rm(A1,A2)
\end{lstlisting}



Verifique!

\subsection{\texorpdfstring{Classes Date}{Classes Date}}
\label{sec:classes_date}


Crie objetos com a datas do tri e tetracampeonatos mundiais do Brasil\footnote{fonte: \href{http://pt.fifa.com/worldcup/archive/}{FIFA} }:\lstset{frame=single}
\begin{lstlisting}

copa.70 <- "21/06/70"
copa.94 <- "17/07/94" 
\end{lstlisting}



Qual a diferença em dias entre estas datas? A subtração retorna um erro (verifique):\lstset{frame=single}
\begin{lstlisting}

copa.94 - copa.70
\end{lstlisting}



Isto acontece porque os objetos são caracteres, uma classe que obviamente não permite operações aritméticas:\lstset{frame=single}
\begin{lstlisting}

class(copa.70)
class(copa.94)
\end{lstlisting}



Mas o R tem uma classe para datas, que é \texttt{Date}. Faça a coerção dos objetos para esta classe, verifique se a coerção foi bem sucedida, e repita a subtração:\lstset{frame=single}
\begin{lstlisting}

copa.70 <- as.Date(copa.70,format="%d/%m/%y")
copa.94 <- as.Date(copa.94,format="%d/%m/%y")
class(copa.70)
class(copa.94)
copa.94 - copa.70
\end{lstlisting}



\textbf{NOTA:} o argumento \texttt{format} da função \texttt{as.Date} informa o formato em que está o conjunto de caracteres que deve ser transformado em data, no caso dia/mês/ano (\texttt{\%d/\%m/\%y}), todos com dois algarismos. Veja a ajuda da função para outros formatos.

\subsection{\texorpdfstring{Níveis de Fatores}{Niveis de Fatores}}
\label{sec:niveis_de_fatores}


Imagine uma escala de herbivoria com os níveis ,,alto", ,,médio", ,,baixo" e ,,nulo". Vamos criar um objeto que representa o valor desta medida de herbivoria em uma amostra de 14 plantas:\lstset{frame=single}
\begin{lstlisting}

herb <- c("A","M","M","A","A","M","M","B","A","A","A","A","B","A")
\end{lstlisting}



E então vamos criar um objeto da classe fator com estes valores:\lstset{frame=single}
\begin{lstlisting}

herb.f <- factor(herb)
\end{lstlisting}



Usamos a função \texttt{table} para contar o número de observações em cada nível do fator, cujo resultado atribuímos a um outro objeto. Os valores são exibidos se digitamos o nome do objeto.\lstset{frame=single}
\begin{lstlisting}

(herb.t <- table(herb.f))
\end{lstlisting}



A função para gerar gráficos \texttt{plot} pode ser aplicada diretamente ao objeto desta tabela:\lstset{frame=single}
\begin{lstlisting}

plot(herb.t)
\end{lstlisting}



\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/02_tutoriais/tut_fatores}


Há dois problemas aqui: na tabela e na figura os níveis não estão ordenados, e falta o nível de herbivoria nula. Isto acontece porque, ao criar uma variável de fator a partir de um vetor de valores, o R cria níveis apenas para os valores presentes, e ordena estes níveis alfabeticamente.

Isto pode ser mudado explicitando os níveis e sua ordem com o argumento \texttt{levels} da função fator:\lstset{frame=single}
\begin{lstlisting}

herb.f <- factor(herb, levels=c("N","B","M","A"))
herb.t <- table(herb.f)
herb.t
plot(herb.t)
\end{lstlisting}



\textbf{NOTA:} há uma classe para fatores ordenados que poderia se aplicar aqui, mas seu uso tem implicações importantes nos resultados de algumas análises, que no momento não vêm ao caso. Mais informações a respeito na ajuda da função \href{http://finzi.psych.upenn.edu/R/library/base/html/factor.html}{factor}.

\subsection{\texorpdfstring{Carregando Pacotes}{Carregando Pacotes}}
\label{sec:carregando_pacotes}


Pacotes são conjuntos de funções específicas do R, distribuídos em conjunto. No repositório do R estão armazenadas uma quantidade muito grande de pacotes que geralmente tem funções para um certo conjunto de tarefas associadas (p.ex: análise de padrões espaciais de pontos). Para usar um pacote é necessário entender a diferença entre baixar o pacote (download) do repositório e carregar o pacote na sua área de trabalho. Veja a apostila para mais detalhes se houver ainda dúvidas sobre como usar pacotes 

Quais pacotes estão disponíveis na sua instalação de R? Você pode verificar isto com o comando:\lstset{frame=single}
\begin{lstlisting}

library()
\end{lstlisting}



Outra maneira é iniciar a interface hipertexto de ajuda com:\lstset{frame=single}
\begin{lstlisting}

help.start()
\end{lstlisting}



 E escolher o link \emph{,,Packages"}, que você terá a lista do pacotes já instalados. 
Na interface hipertexto clique no nome de um dos pacotes. Você verá a lista de todos os objetos que este pacote contém.

Quais pacotes estão carregados? Uma maneira simples de descobrir é com o comando:\lstset{frame=single}
\begin{lstlisting}

search()
\end{lstlisting}



Agora vamos gerar 15 números sorteados de uma distribuição normal, com média 1 e desvio-padrão=3, e guardar o resultado no onbjeto \texttt{x1}:\lstset{frame=single}
\begin{lstlisting}

x1 <- rnorm(n=15, mean=1, sd=3)
\end{lstlisting}



Para fazer um histograma deste valores, há a função \texttt{hist}, do pacote \emph{graphics}:\lstset{frame=single}
\begin{lstlisting}

hist(x1)
\end{lstlisting}



Mas há também a função \texttt{truehist}, do pacote \emph{MASS}:\lstset{frame=single}
\begin{lstlisting}

truehist(x1)
\end{lstlisting}



Este comando retornará uma mensagem de erro, que avisa que o R não encontrou o objeto \texttt{truehist}. Para que isso não aconteça, é preciso carregar o pacote \emph{MASS}, que já está instalado na distribuição básica do R:\lstset{frame=single}
\begin{lstlisting}

search()
library(MASS)
search()
truehist(x1)
\end{lstlisting}



\end{document}
