1 Introdução

1.0 Prefácio

A razão pelo qual estou escrevendo este howto é facilitar a escrita de textos científicos, especialmente estatísticos, com o auxílio de duas ferramentas poderosas. De um lado, para a redação do texto, temos o LaTeX, que permite a compilação do texto. Do outro, temos o R que é um poderoso software estatístico similar a linguagem S desenvolvido pelo Bell Laboratories que é usado para o cálculo de dados e a construção de gráficos.

1.1 A quem é destinado este HowTo?

Este HowTo é destinado à pessoas que já possuem um conhecimento de LaTeX e R separadamente. Principalmente à estatísticos e aqueles que queiram usar o poder do R associado ao LaTeX.

1.2 O que é Sweave?

O Sweave é uma biblioteca do R que permite a interpretação de uma seção do R dentro do texto em LaTeX.

1.3 Requisitos

Para trabalhar com Sweave, você precisará de:
  • LaTeX
  • R
  • Sweave.sh

O script Sweave.sh nada mais é do que estas linhas:

#!/bin/sh
echo "library(tools); Sweave(\"$1\")" | R --no-save --no-restore

2 Primeiros Passos

Para se escrever um texto usando o sweave, você terá que usar uma das extensões abaixo:
  • .rnw ou .Rnw
  • .snw ou .Snw

A estrutura do arquivo será a estrutura de um .tex normal, o sweave apenas interpretará o código que ele reconhece. O restante ficara como o original. Exemplo:

\documentclass [a4paper]{article}
\title {Sweave Example 1}
\author {Fábio Rampazzo Mathias }
\begin {document}
\maketitle

Neste exemplo mostramos como é o fonte de um arquivo a ser interpretado usando sweave.

<<>>=
(código em R)
@
\end{document}

Perceba que o documento é igual ao documento .tex, a única diferença é da sintaxe "<<>>=" até "@", que será o código interpretado pelo R. O sweave abrirá o R, executará todos os códigos do R que estão no .snw e unirá os códigos não-R com os códigos R já tratados dentro de um .tex.

3 Trabalhando com Sweave

3.1 Opções

No exemplo acima, vimos que o sweave apenas interpretará o código que estiver entre "<<>>=" e "@". Portanto, para configurar as opções do Sweave, colocaremos as opções dentro do cabeçalho "<<>>=". Usaremos a sintaxe opcao=valor para configurar uma opção. E elas podem ser:
  • engine - qual S engine ele irá usar. O possíveis valores são: R, S, S3 ou S4. Default: R;
  • echo - Se TRUE ele imprimira no texto, toda saída de texto gerada pelo código. Se FALSE ele executará o código escondendo as saidas de texto;
  • fig - Se TRUE colocará as figuras (plots) especificadas no código. Se FALSE esconderá as figuras;
  • label - Um texto que identifica o bloco de intruções;
  • split - Se TRUE o output se dividirá em vários arquivos. Se FALSE o output será compilado num arquivo só. Default: FALSE;

Obs: a opção label pode ser escondida se usada como primeira opção. Exemplo: "<<label=Fabio,fig=TRUE>>=" é igual a escrever "<<Fabio,fig=TRUE>>=".

3.2 Escalares

Muitas vezes, quando escrevemos um texto, precisamos do valor de uma expressão, para isso, usamos o comando \Sexpr{expressão} dentro do LaTeX. Ele retornará o valor da expressão. Por exemplo, se dentro do texto usarmos \Sexpr{sqrt(16)}, quando compilarmos aparecerá '4' (sem as aspas). O \Sexpr executa uma expressão na mesma seção do R em que você já calculou algo. Portanto é possível chamar valores de variáveis do R para dentro do texto.

3.3 Reuso de blocos

O Sweave permite também a reutilização de códigos. Ou seja, se você já fez o cálculo de uma variável e precisa dela em outro bloco, você pode chamá-la por "<<label denominado>>". Exemplo:

<<a>>=
  x <- 20;
@

<<>>=
  <<a>>
  y <- 20;
  x + y;
@

4 Compilando

Uma vez baixado o script Sweave.sh, de um:

$ chmod +x Sweave.sh

Após feito isso, compile seu script de sweave com:

$ ./Sweave.sh script.snw

Isso gerará um arquivo script.tex, alguns arquivos .eps (se tiver figura em seu texto) e um .pdf. O .pdf é a visualização dos eps. Agora, é só compilar o .tex usando:

$ latex script.tex 

Pronto! Seu texto está compiladinho em script.dvi, se preferir gerar a saida em .pdf é só completar:

$ dvipdf script.dvi

Observação: seria legal copiar o sweave.sh para dentro de um de seus PATHs para poder chamá-lo de qualquer local!

5 Conclusão

Vimos neste pequeno HowTo, como usar o Sweave para facilitar o trabalho não prioritário, a digitalização, da análise.


Authors:Fábio Rampazzo Mathias
Version:1.0