Anthony D
Anthony D

Reputation: 487

add another caption below table with kable

in R markdown, knitting to PDF, kable allows to include a 'caption' (which really is a table title), but I'd like to add another caption below the table in smaller font. Any ideas how to do that? (I don't want to just add text below in the main markdown doc because then it's number and not part of the table float).

Here's some code example:

library(knitr)
name <- c('Na~2~O', 'Ca', 'Ba')
value <- c(2,3,5)
data <- data.frame(name, value)
rownames(data) <- data[,1]
data$name <- NULL
kable(data, format = "pandoc", caption = 'some title')

Upvotes: 2

Views: 9989

Answers (2)

B. Stanley
B. Stanley

Reputation: 254

Using the kable function, here is how to do it from this page: https://haozhu233.github.io/kableExtra/awesome_table_in_html.html

That page is just a good resource in general. Here is what they say regarding footnotes:

There are four notation systems in footnote, namely general, number, alphabet and symbol. The last three types of footnotes will be labeled with corresponding marks while general won’t be labeled. You can pick any one of these systems or choose to display them all for fulfill the APA table footnotes requirements.

kable(dt, align = "c") %>% 
kable_styling(full_width = F) %>%
footnote(general = "Here is a general comments of the table. ",
       number = c("Footnote 1; ", "Footnote 2; "),
       alphabet = c("Footnote A; ", "Footnote B; "),
       symbol = c("Footnote Symbol 1; ", "Footnote Symbol 2"))

Upvotes: 7

jay.sf
jay.sf

Reputation: 73612

You could use xtable. For that you need to put your data into a list and give it an attribute "message".

```{r table1, results='asis', message=FALSE, echo = FALSE}
data <- list(data)
attr(data, "message") <- c("\\textit{Note: }Here you can enter some", 
                           "text as your desired caption",
                           "there's somewhere a workaround",
                           "not needing to put in text like this",
                           "but at least it works.")

library(xtable)
print(xtableList(data, caption="some title")
      , caption.placement = "top"
      , sanitize.text.function = identity
      )
```

Yields

enter image description here

Data

name <- c('Na\\textsubscript{2}O', 'Ca', 'Ba')
value <- c(2,3,5)
data <- data.frame(name, value)
rownames(data) <- data[,1]
data$name <- NULL

Note: In addition, for better formatting this solution should also be applicable here (not tried yet though).

Upvotes: 0

Related Questions