table with long text, bullet points and specific table width

An alternative solution based on kableExtra (optional: with footnotes)

This approach allows to add a caption, to manually add footnotes within the table, and to fix column widths.

To create the bullet point list:

  • "thicker" \cdots from LaTex are employed as bullets (alternatives see here)
  • linebreaks are forced with \n (indentation is therefore not as nice as with the pander approach from @daroczig).

MWE

library(stringi); library(kableExtra); library(dplyr)
string_short <- "Descriptor"
string_long <- substr(stri_rand_lipsum(1), 1, 50)

# add footnotes manually within table
string_bulletlist <- "$\\boldsymbol{\\cdot}$ bullet point 1: foo$^{a}$ \n $\\boldsymbol{\\cdot}$ bullet point 2: bar$^{b}$"

df <- data.frame(col1 = c(string_short, string_short),
                 col2 = c(string_bulletlist, string_bulletlist),
                 col3 = c(string_long, string_long)
)
col_names <- c("Descriptor", "Description with list", "Some comment")

# header: bold column names
colnames(df) <- paste0("\\textbf{", col_names,"}")

# add footnote with kableExtra commands
names(df)[1] <- paste0(names(df)[1], footnote_marker_symbol(1))

df %>%
  mutate_all(linebreak) %>% # required for linebreaks to work
  kable(
    "latex",  
    escape = F, 
    booktabs=TRUE, 
    align = "l",
    caption = 'kableTable with bullet list and footnote') %>%
  # kable_styling(full_width = F) %>% # makes no difference here
  footnote(general = "General comment of the table.",
           alphabet = c("Footnote A;", "Footnote B;"),
           symbol = c("Footnote Symbol 1")) %>% 
  column_spec(1, width = "5em") %>% # fix width column 1
  column_spec(2, width = "10em") %>% # fix width column 2
  column_spec(3, width = "15em") # fix width column 3

To [improve line spacing[(https://stackoverflow.com/questions/53794142/increase-line-row-spacing-with-kableextra), one can add the following before & after code chunk in the Rmd:

\renewcommand{\arraystretch}{1.5} <!-- increase line spacing for the table -->
RMD CHUNK HERE
\renewcommand{\arraystretch}{1} <!-- reset row hight/line spacing -->

kableExtra table

Comment:

I also tried the pander approach from @daroczig and made the following experiences:

  • Pro: nice line spacing plus a "real bullet list" (compared to the $\boldsymbol{\cdot}$-workaround in the kableExtra approach).
  • Con: a large blank space is included after the bullet list

In addition, when using the pander approach in an Rmd file using the huskydown thesis template the footnotes greatly messed up the table alignment.