Skip to content

[R-es] ¿Cómo generar tabla apaisada salida PDF con RMarkdown?

6 messages · Carlos Ortega, palazon, doblett +1 more

#
Buenas a todos.

No me queda del todo claro si éste es el foro en el que preguntar o 
debería ser otro, ya que incluye cosas que van más allá de R. Sepan 
disculpar si me estoy excediendo.

Estoy trabajando con RStudio y quiero generar un documento de salida en 
PDF; en ese documento tengo bastantes tablas anchas que no entran usando

knitr::kable(la.tabla.ancha)

Sí salen perfectamente en HTML (no son tan anchas). Me resulta evidente 
que si las pudiera poner a página entera en formato apaisado, no tendría 
problema y es lo que querría hacer.

Intenté conseguirlo usando 'xtable' con un código que encontré por ahí. 
Pongo seguido un ejemplo para poner en un documento Rmd

---
title: "Tablas que no entran"
author: "Sandia Urlia"
date: ""
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```


```{r}
la.tabla.ancha <- cars[c(1:10),rep(1,14)]
knitr::kable(la.tabla.ancha, caption = "La tablaza")
```


```{r results='asis'}
options(xtable.comment = FALSE)
print(
     xtable::xtable(
         la.tabla.ancha, caption = "La-tablota",
         floating = TRUE,
         floating.environment = "sidewaystable",
         type = "html"
     ))

```
Y así se ve que las tablas no entran :__(

Muchas gracias
#
Hola,

Creo que esta referencia de StackOverflow te puede ayudar:

http://stackoverflow.com/questions/25849814/rstudio-rmarkdown-both-portrait-and-landscape-layout-in-a-single-pdf

Saludos,
Carlos Ortega
www.qualityexcellence.es

El 8 de septiembre de 2016, 17:28, Juan Abasolo <vcpabisj en gmail.com>
escribió:

  
    
#
Hola:

En el documento The |xtable| Gallery 
<https://cran.r-project.org/web/packages/xtable/vignettes/xtableGallery.pdf>

Puedes encontrar esta referencia:

|print( la.tabla.ancha, floating = TRUE, floating.environment = 
"sidewaystable" )|

Espero que te sea útil

Seguimos



El 08/09/16 a las 17:28, Juan Abasolo escribió:

  
    
#
Muchas gracias, José Antonio y Carlos.

Estaba por escribir sandeces varias. Comento, por si hay algún lector, 
que como yo, se guarda los correos con respuestas a problemas posibles.

No estaba usando|header.tex|, que es necesario para una como para otra 
solución.

El encabezado queda así:
|---||
||title: "Tablas que no entran"||
||author: "Sandia Urlia"||
||date: ""||
||output: ||
||    pdf_document:||
||        includes:||
||            in_header: header.tex ||
||---
|
La solución que comentó Carlos (la de: 
http://stackoverflow.com/questions/25849814/rstudio-rmarkdown-both-portrait-and-landscape-layout-in-a-single-pdf) 
tiene la ventaja de que permite girar tablas generadas con |kable()| sin 
más que poner tres lineas de código tex. Importante dejar un espacio 
después de terminar el chunk y antes de |\elandscape|.

|
||\newpage||
||\blandscape||
||```{r }||
||la.tabla.ancha <- cars[c(1:10),rep(1,14)]||
||knitr::kable(la.tabla.ancha, caption = "La tablaza")||
||```||
||
||\elandscape|

También sirve para girar código o lo que haga falta. En el caso de 
arriba aparecen girados el código y la tabla.
En contra (o a favor) el entorno no es flotante, por lo que en el punto 
en el que se coloque irá la página nueva


La solución que comentó josé Antonio requiere que en el documento 
header.tex se incluya la linea:
|
||\usepackage{rotating}

|
Que, por otro lado, es lo que le faltaba al documento que había 
presentado antes para poder funcionar.
https://cran.r-project.org/web/packages/xtable/vignettes/xtableGallery.pdf 
(pag. 25)

Así quedó el chunk

|```{r results='asis'}||
library(xtable)
||x <- xtable(||
||        la.tabla.ancha, caption = "La tablota (2)"||
||    )||
||options(xtable.comment = FALSE)||
||print(x, floating = TRUE,||
||        floating.environment = "sidewaystable"||
||    )||
||```|

Pero atento! Que esta otra forma no funciona:
|
||```{r results='asis'}||
||options(xtable.comment = FALSE)||
||print(||
||    xtable::xtable(||
||        la.tabla.ancha, caption = "La tablota (1)",||
||        floating = TRUE,||
||        floating.environment = "sidewaystable"||
||    ))||
||```|
Para que funcione, tiene que estar generado el elemento |xtable| antes 
de |print()| y luego asignarlo.

A favor (o en contra): el entorno que genera es flotante, por lo que se 
insertará según las reglas de composición de LaTeX y no ahí mismo donde 
uno está escribiendo.

Un posible header.tex para ver las dos soluciones:

|||%para que rote con xtable
||\usepackage{rotating}||

%para girar a piacere
||\usepackage{lscape}||
||\newcommand{\blandscape}{\begin{landscape}}||
||\newcommand{\elandscape}{\end{landscape}}|



og., 2016.eko iraren 08a 18:36(e)an, Carlos Ortega igorleak idatzi zuen:

  
    
13 days later
#
Hola Juan,
aunque un poco tarde te comento. Yo suelo trabajar con tablas grandes
sacando el codigo a latex (xtable) para obtener un pdf. La solución a
tablas grandes la obtengo a través de un

*print + scalebox:*

*tmp <- xtable(mi.tabla)print(tmp, scalebox = 0.8,      floating = FALSE)*

La opción *floating* la uso para que se quede tal cual donde la dejo.

Saludos!!!


El 9 de septiembre de 2016, 12:09, Juan Abasolo <vcpabisj en gmail.com>
escribió:

  
  
4 days later
#
Muchas gracias, de momento lo dejo en Stand By y lo doy por resuelto. 
Pero me queda para el siguiente lío.


or., 2016.eko iraren 23a 08:56(e)an, doblett igorleak idatzi zuen: