blog-image

Ferramentas para criação de tabelas LaTex a partir do R

Sair do ambiente R para exportar resultados e tabelas nem sempre é uma tarefa fácil, em especial quando deseja-se exportar estes resultados para o ambiente LaTex. O motivo é simples de ser entendido, afinal nem nem sempre os resultados possuem uma estrutura simples e como acontece, as vezes este é demasiadamente grande. Neste post, vamos discutir algumas soluções para tornar esta tarefa mais simples e é claro, mais divertida. Além disso, vamos ilustrar exemplos da utilização de tais pacotes.

Provavelmente é o pacote mais utilizado para transformar objetos R em objetos LaTex ou HTML. Sua utilização é extremamente simples e o pacote possui basicamente uma única função, que é a função xtable e claramente, esta possui muitos argumentos. Consegue transformar dataframes, matrizes e suporta pelo menos as saídas das seguintes funções: lm, aov, anova, glm, prcomp e ts.

# xtable.R<br></br>xtable(mtcars) # imprimindo um dataframe no formato LaTex<br></br>ajuste = lm(hp~wt, data=mtcars)<br></br>ajuste_latex = xtable(ajuste)<br></br>print(ajuste_latex, type='latex')<br></br>

Uma descrição melhor do pacote pode ser achada aqui. A tabela a seguir exibe o output quando type=‘html’.

Estimate Std. Error t value Pr(> |t|)
(Intercept) -1.8209 32.3246 -0.06 0.9555
wt 46.1601 9.6253 4.80 0.0000

Este é um pacote que basicamente transforma saídas de modelos em objetos LaTex, HTML, markdown e doc. E mais do que isso, ele é capaz de gerar outputs com comparações entre modelos. Suporta cerca de 52 tipos diferentes de objetos, dentre eles lm, glm, lme, survreg, logit, weibreg e multinom.

Exemplo de utilização

# texreg.R<br></br>m1 = lm(hp~wt, data=mtcars)<br></br>m2 = lm(hp~wt-1, data=mtcars) # Sem intercepto<br></br>texreg(list(m1, m2))<br></br>

Uma quantidade arbitrária de modelos pode ser passado para a função texreg, desde que estejam dentro de uma lista. Caso selecione que o output seja um código HTML, o seguinte resultado será gerado. Uma descrição melhor do pacote pode ser encontrada aqui.

Statistical models **Model 1** **Model 2**
(Intercept) -1.82
(32.32)
wt 46.16*** 45.64***
(9.63) (2.72)
R2 0.43 0.90
Adj. R2 0.42 0.90
Num. obs. 32 32
***p < 0.001, **p < 0.01, *p < 0.05

Diferentemente dos pacotes citados anteriormente, este não foi feito com o único propósito de gerar tabelas em formato LaTex e html. Na verdade este pacote é um conjunto de funções úteis, desde cálculo de tamanho de amostra até manipulação de strings, e é claro que nesse meio não poderia faltar uma função para gerar tabelas LaTex. Outra funcionalidade interessante é o suporte ao longtable e a grande flexibilidade fornecida pelo pacote. Para maiores detalhes, ?latex.

# Hmisc.R<br></br>latex(mtcars) # Vai gerar um arquivo no seu diretório de trabalho.<br></br>latexTabular(mtcars) # Imprime a tabela.<br></br>

Pacote criado com o objetivo de criar e exibir tabelas complexas com informações estatísticas. Na verdade o pacote em si não gera nenhum tipo de código LaTex, mas sim ajuda a criar tabelas com um design agradável. Para a criação do código LaTex, é necessário utilizar um dos outros pacotes descritos aqui.

# tables.R<br></br>formula = (as.factor(gear) + 1) ~ (n = 1) + (hp + wt) * (mean + sd)<br></br>tabular(formula, data = mtcars)<br></br>

Apesar de inicialmente a sintaxe parecer estranha, com o tempo dá para encará-la com mais naturalidade e parece que em parte foi influenciada pelo SAS PROC TABULATE. A criação das tabelas é dada por meio de fórmulas, por exemplo, aquelas mesmas fórmulas que são utilizadas em um modelo de regressão e então a função tabular parseia esta fórmula e cria a tabela desejada.

Agora é hora de vermos como a sintaxe funciona. A primeira coisa que devemos saber é: O que está antes do ~ serão as linhas e o que estiver depois serão as colunas.

Para as linhas, estamos transformando a variável gears em um fator(deseja-se calcular média e desvio-padrão para cada quantidade de marchas do carro) e 1 nada mais significa que calcular as estatísticas para todas classes de _gear _, e nestes casos, o sinal de + tem o significado de concatenação.

Com as colunas a coisa não muda muito, e assim como acontecia com as linhas, o sinal de + continua significando concatenação. A primeira coluna é correspondente a n=1 e uma vez que nenhuma outra estatística foi atribuída, simplesmente irá retornar o número de casos de cada uma das classes de gear. Para a segunda coluna, estamos falando que para as variáveis hp e wt, terão de ser aplicadas as funções mean e sd. Para cada classe de gear, calcule o número de observações, média e variância para as variáveis hp e wt. Aplicando a função que latex do pacote Hmisc o resultado será como segue abaixo. Uma descrição melhor do pacote pode ser encontrada aqui.

hp wt as.factor(gear) n mean sd mean sd 3 4 5 All
15 176.1 47.69 3.893 0.8330
12 89.5 25.89 2.617 0.6327
5 195.6 102.83 2.633 0.8189
32 146.7 68.56 3.217 0.9785

Assim como o tables, este é um pacote que fornece facilidades na criação de tabelas com resultados de estatística descritiva.

# reporttools.R<br></br>variaveis = mtcars[, c('hp', 'wt')]<br></br>grupos = factor(mtcars$gear)<br></br>tableContinuous(vars=variaveis, group=grupos, pval=none )<br></br>

Por padrão, ele calcula uma série de estatísticas descritivas dependendo da função que você usa(tableContinuous, tableNominal ou tableDate) e caso queira calcular apenas uma ou outra estatística basta passar na chamada da função uma lista em que cada nó possui o nome da função a ser aplicada ao subconjunto de dados. E a saída é como algo mostrado na imagem abaixo.

Como podemos ver, a saída é algo bem parecido com a saída do tables, exceto o fato de a sintaxe aqui ser algo muito mais simples de ser entendida e reproduzida. Simplesmente são passadas as variáveis que se deseja obter as estatísticas, os grupos pelos quais serão estratificadas aquelas variáveis e a função a ser aplicada em cada um destes extratos. Uma descrição melhor do pacote pode ser encontrada aqui. ** ** Introduzimos aqui uma série de pacotes certamente irão auxiliar na exportação dos resultados R para seus documentos LaTex e dependendo da situação, utilizar um ou outro pode ser uma experiência mais satisfatória. Se você tem um modelo de regressão, por exemplo, e quer inserí-lo em seu documento LaTex, o pacote pode ser uma ótima opção, ainda que o xtable seja muito prático. E é claro, as opções não se limitam as descritas aqui.