O Sweave é uma funcionalidade do R implementada por algumas funções do pacote utils (no pacote tools em versões mais antigas do R) que permite a edição ágil de documentos combinando o LaTeXe o R.
Usando o Sweave o usuário pode ter comandos, saídas computacionais e/ou gráficos incluídos automaticamente no texto, sem a necessidade de fazer tal inclusão manualmente e passo a passo. Este mecanismo também permite que o texto seja ágil e automaticamente atualizado para qualquer mudança ou inclusão de dados e/ou nas análises, acelerando muito o processo de edição de textos.
Uma outra vantagem relevante é a de que todo código usado para análise fica no arquivo texto (fonte) preservando a memória dos procedimentos usados e possibilitando a reprodução ou modificação das análises facilmente e a qualquer tempo.
Com estes aspectos o Sweave torna-se uma ferramenta adequada para o que se chama de pesquisa reproduzível (reproducible research) uma vez que permite que o código das análises seja disponibilizado junto e integrado ao texto.
As possibilidades de uso do Sweave são diversas e podemos citar como exemplos a confecção de relatórios, provas, listas de exercícios, textos técnicos, relatórios de análises, artigos científicos e livros. Outro exemplo ainda é este material sobre o R que foi todo originalmente editado em formato Sweave.
Os passos básicos para uso do Sweave são:
Editar o arquivo .Rnw. Neste documento vamos supor que seu arquivo se chama foo.Rnw
Iniciar o R
rodar a função Sweave() no seu documento com um comando do tipo:
> Sweave("foo.Rnw")
Ao final destes passos, a função Sweave() irá imprimir uma mensagem na tela como a seguir
dizendo que o documento foo.tex foi gerado.
You can now run LaTeX on 'foo.tex'
Caso outra mensagem que não esta apareça na tela algum problema deve ter ocorrido com o código R em seu documento. Leia a mensagem, identifique e corrija o erro e processe novamente com Sweave().
Compile e visualize o documento LaTeX de forma usual.
tetex-bin e tetex-extra. No
Windows a instalação do MiKTeX deve prover as ferramentas necessárias.
Versões mais recentes do R incorporaram o comando Sweave de tal forma que é possível
processar o documento .Rnw para gerar o .tex diretamente da linha de comando
do LINUX sem a necessidade de iniciar o R. Para isto basta digitar o comando a
seguir na linha de comando do LINUX (ou o comando análogo em outros sistemas
operacionais).
R CMD Sweave foo.Rnw
O mecanismo descrito anteriormente substitui uma versão anterior que recomendava o uso
do script Sweave.sh que também permitia rodar o Sweave no seu documento .Rnw
diretamente da linha de comando do LINUX, sem a necessidade de iniciar o R, bastando
digitar:
Sweave.sh foo.Rnw
Note que para o comando acima funcionar o "script"Sweave.sh deve estar como arquivo
executável e disponível no seu PATH.
Alternativamente você pode copiá-lo para o seu diretório de trabalho e rodar com:
./Sweave.sh foo.Rnw
Este arquivo deve estar em formato executável e para assegurar isto no LINUX digita-se:
chmod +x Sweave.sh
O script Sweave.sh foi portanto substituído pelo comando R CMD Sweave, mas permanece de
interesse caso deseje-se modificar para adaptar a alguma necessidade específica do
usuário.
.Rnw. Por
exemplo, rodando Stangle("foo.Rnw") vai ser gerado um arquivo foo.R que contém apenas o
código R do arquivo.
Alguns editores facilitam o uso do Sweave (podem haver outros além dos mencionados a seguir): Isto é muito útil na preparação dos documentos pois permite também que o código em R dentro dos chunks seja enviado de forma ágil para processamento no R.
Há duas formas de controlar o tamanho de gráficos no Sweave, a primeira via R especificando o tamanho do gráfico a ser gerado, e segunda usando comandos do LaTeXpara definir o tamanho dos gráficos. Os dois mecanismos podem ser usados em conjunto.
O primeiro mecanismo usa a definição do tamanho da imagem em argumentos do chunk
como <<fig=true, width=L, height=A>>=, onde L e A são números em unidades de
polegadas.
No segundo mecanismo usa-se recursos do pacote graphicx do LaTeXcom o comando
\setkeys{Gin}{width=L}, onde L é uma unidade de medida do LaTeXtal como 0.8\textwidth
(80% da largura do texto) ou 5cm. Pode-se definir também a altura do gráfico, caso contrário a figura
é escalonada automaticamente mantendo a proporção entre largura e altura.
Arquivo com o conteúdo da seção sobre distribuições de probabilidades deste material. Para compilar este exemplo você poderá precisar copiar também os seguintes arquivos: Sweave.sty, Rd.sty e upquote.sty,
Documento mostrando como obter tabelas estatísticas a partir do R.