Search code examples
rknitr

wrap long text in kable table column


I would like wrap long text in my kable table. Here is a simple example of a table with column text that is too long and needs to be wrapped for the table to fit on the page.

---
title: "test"
output: pdf_document
---

```{r setup, include=FALSE}
  library(knitr)
```


This is my test

```{r test, echo=FALSE}
test <- data.frame(v1=c("This is a long string. This is a long string. This is a long string. This is a long string. This is a long string.",
                        "This is a another long string. This is a another long string. This is a another long string. This is a another long string. This is a another long string."),
                   v2=c(1, 2))
kable(test)
```

enter image description here


Solution

  • I've created the pander package to produce markdown tables in a flexible way. By default, it will split cells with long string to 30 chars, but there are a bunch of global options and fn arguments to override that, enable hyphenation and other tweaks. Quick demo:

    > pander::pander(test)
    
    -----------------------------------
                  v1                v2 
    ------------------------------ ----
    This is a long string. This is  1  
    a long string. This is a long      
    string. This is a long string.     
        This is a long string.         
    
    This is a another long string.  2  
    This is a another long string.     
    This is a another long string.     
    This is a another long string.     
    This is a another long string.     
    -----------------------------------
    
    > pander::pander(test, split.cell = 80, split.table = Inf)
    
    ------------------------------------------------------------------------------------
                                          v1                                         v2 
    ------------------------------------------------------------------------------- ----
    This is a long string. This is a long string. This is a long string. This is a   1  
                          long string. This is a long string.                           
    
    This is a another long string. This is a another long string. This is a another  2  
      long string. This is a another long string. This is a another long string.        
    ------------------------------------------------------------------------------------