Использование заголовка таблицы в файле R markdown с использованием knitr для использования в pandoc для преобразования в pdf
Мне интересно, можно ли использовать заголовки таблиц, например, подписи фигур, используя knitr в .Rmd файле?
Я видел варианты заголовка рисунка, но я не мог видеть вариант для заголовка таблицы. Я также хочу удалить сообщение, например "% latex table generated in R 2.15.2 by xtable 1.7-0 package % Wed Mar 06 15:02:11 2013"
.
Я использовал таблицу X для создания таблицы: Пример кода, который я использовал, выглядит следующим образом:
```{r table2, results='asis', message=FALSE}
library(xtable)
print(xtable(head(iris)))
```
Таблица, полученная после обработки через pandoc, выглядит следующим образом:
![enter image description here]()
Я попытался использовать message = FALSE в файле Rmd, чтобы избавиться от сообщения, показанного выше. Я также хочу знать, можно ли автоматически добавить заголовок для таблицы в Rmd?
Под заголовком я имею в виду что-то вроде ниже (это для цифры), и номер цифры автоматически обновляется.
Этот вывод представляет собой моментальный снимок из pdf, сгенерированного pdf, с помощью файла markdown, созданного knitr.
![enter image description here]()
Спасибо.
Ответы
Ответ 1
Если вы не настаиваете на использовании решения LaTeX/HTML только с отличным пакетом xtable
, вы можете добиться того же с уценкой Pandoc. Один из вариантов - добавить подпись вручную под таблицей или использовать R Пакет Pandoc writer:
> library(pander) # load pkg
> panderOptions('table.split.table', Inf) # not to split table
> set.caption('Hello Fisher!') # add caption
> pander(head(iris)) # show (almost) any R object in markdown
-------------------------------------------------------------------
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
-------------- ------------- -------------- ------------- ---------
5.1 3.5 1.4 0.2 setosa
4.9 3.0 1.4 0.2 setosa
4.7 3.2 1.3 0.2 setosa
4.6 3.1 1.5 0.2 setosa
5.0 3.6 1.4 0.2 setosa
5.4 3.9 1.7 0.4 setosa
-------------------------------------------------------------------
Table: Hello Fisher!
Затем используйте Pandoc для преобразования этого файла разметки в HTML, LaTeX, docx, odt или любые другие популярные форматы документов.
Ответ 2
Вы можете вставлять таблицы с автоматически пронумерованными подписями в методе уценки для обработки с помощью pandoc с использованием прямого кода knitr. Вставьте этот фрагмент кода вверху вашего файла .rmd:
```{r setup, echo=FALSE}
tn = local({
i = 0
function(x) {
i <<- i + 1
paste('\n\n:Table ', i, ': ', x, sep = '')
# The : before Table tells pandoc to wrap your caption in <caption></caption>
}
})
knit_hooks$set(tab.cap = function(before, options, envir) {
if(!before)
tn(options$tab.cap)
})
default_output_hook = knit_hooks$get("output")
knit_hooks$set(output = function(x, options) {
if (is.null(options$tab.cap) == F)
x
else
default_output_hook(x,options)
})
```
Чтобы вставить нумерованный заголовок таблицы:
```{r myirischunk, tab.cap="This is the head of the Iris table"}
kable(head(iris))
```
Переопределяя выходной крючок и используя tab.cap, вам не нужно загромождать ваши параметры куска с результатами = 'asis'.
Спасибо Knitr!
PS: Если вы хотите конвертировать в латекс /pdf, вам, скорее всего, понадобится латекс, чтобы набрать таблицы для вас. В этом случае вы можете изменить tn(options$tab.cap)
на paste('\n\n:', options$tab.cap, sep='')
, но я не тестировал это.
Ответ 3
Вы можете выполнить это с помощью xtable
. Добавьте caption
в xtable
и comment=FALSE
к функции print
.
print(
xtable(
head(iris),
caption = 'Iris data'
),
comment = FALSE,
type = 'latex'
)
Смотрите документацию xtable и print.xtable.