Использование заголовка таблицы в файле R markdown с использованием knitr для использования в pandoc для преобразования в pdf - программирование
Подтвердить что ты не робот

Использование заголовка таблицы в файле 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

Спасибо.

4b9b3361

Ответ 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.