R: рендеринг xtable

У меня есть файл .Rmd, содержащий:

```{r, echo=FALSE, message=FALSE, results='asis'}
library(xtable)
print(xtable(groupGrundALL))  
```  

С помощью кнопки «Связать слово» в RStudio он создает и открывает файл Word, но показывает только следующую текстовую строку вместо самой предполагаемой (визуализированной) таблицы:

% латексная таблица, сгенерированная в R 3.2.2 пакетом xtable 1.7-4 % ср окт 2111:14:28 2015

Когда я запускаю в консоли...

library(xtable)
print(xtable(groupGrundALL)) 

Я получаю код LaTeX:

% latex table generated in R 3.2.2 by xtable 1.7-4 package
% Wed Oct 21 11:16:48 2015
\begin{table}[ht]
\centering
\begin{tabular}{rlrrr}
\hline
& Retouren.Grund & Wert & Menge & Anzahl \\ 
\hline
1 & Fehlbestellung & 685395.00 & 11469.00 & 222 \\ 
2 & andere & 237581.00 & 4354.00 & 179 \\ 
3 & Abgelaufene Ware & 129780.00 & 3522.00 & 1077 \\ 
4 & beschädigte Ware & 37417.00 & 729.00 & 143 \\ 
5 & Falschlieferung & 9943.00 & 280.00 &  14 \\ 
6 & nicht abgeholt & 1471.00 & 21.00 &  11 \\ 
7 & weggezogen & 25.00 & 1.00 &   1 \\ 
\hline
\end{tabular}
\end{table}

Как я могу отобразить саму таблицу и отобразить ее в документе Word?

Спасибо большое за вашу помощь!


person Andi Erni    schedule 21.10.2015    source источник


Ответы (1)


Насколько я знаю, xtable поддерживает только форматы HTML и LaTeX (по умолчанию LaTeX). Если вы визуализируете документ в файл Word, вам необходимо передать свои таблицы в формате уценки. Что касается вариантов того, что делать сейчас, вот несколько из них, которые вы можете рассмотреть (представлены в виде кода, подходящего для вашего документа уценки):

При вязании с документом Word:

---
title: "Sample Document"
output: word_document
---

```{r}
groupGrundALL <- 
  structure(list(Retouren.Grund = structure(c(5L, 2L, 1L, 3L, 4L, 
6L, 7L), .Label = c("Abgelaufene Ware", "andere", "beschadigte Ware", 
"Falschlieferung", "Fehlbestellung", "nicht abgeholt", "weggezogen"
), class = "factor"), Wert = c(685395, 237581, 129780, 37417, 
9943, 1471, 25), Menge = c(11469, 4354, 3522, 729, 280, 21, 1
), Anzahl = c(222, 179, 1077, 143, 14, 11, 1)), .Names = c("Retouren.Grund", 
"Wert", "Menge", "Anzahl"), row.names = c(NA, -7L), class = "data.frame")
```

## `knitr::kable` 
```{r, echo=FALSE, message=FALSE, results='asis'}
knitr::kable(groupGrundALL, format = "markdown")
```  

## `pixiedust`
For markdown tables, `pixiedust` is an extended wrapper for `knitr::kable` that allows you to do some additional formatting without having to preprocess data.

```{r, warning = FALSE}
library(pixiedust)
dust(groupGrundALL) %>%
  sprinkle_print_method("markdown")
```

Если вам удобно устанавливать пакеты из GitHub, вы также можете использовать пакет Grmd (devtools::install_github("gforge/Grmd")) и связать с пакетом docx_document, который позволяет использовать выходные данные HTML из xtable, kable и pixiedust. Это означает, что вам также могут быть доступны все настройки xtable и pixiedust. Когда документ завершен, он сохраняется в виде файла HTML, поэтому вы можете либо щелкнуть правой кнопкой мыши и открыть его как текстовый документ, либо изменить расширение на .docx.

---
title: "Sample Document 2"
output: Grmd::docx_document
---


```{r}
groupGrundALL <- 
  structure(list(Retouren.Grund = structure(c(5L, 2L, 1L, 3L, 4L, 
6L, 7L), .Label = c("Abgelaufene Ware", "andere", "beschadigte Ware", 
"Falschlieferung", "Fehlbestellung", "nicht abgeholt", "weggezogen"
), class = "factor"), Wert = c(685395, 237581, 129780, 37417, 
9943, 1471, 25), Menge = c(11469, 4354, 3522, 729, 280, 21, 1
), Anzahl = c(222, 179, 1077, 143, 14, 11, 1)), .Names = c("Retouren.Grund", 
"Wert", "Menge", "Anzahl"), row.names = c(NA, -7L), class = "data.frame")
```

## `xtable` with HTML
```{r, echo=FALSE, message=FALSE, results='asis'}
library(xtable)
print(xtable(groupGrundALL), type = "html")  
```  

## `knitr::kable` 
```{r, echo=FALSE, message=FALSE, results='asis'}
knitr::kable(groupGrundALL, format = "html")
```  

## `pixiedust` with HTML
```{r, warning = FALSE}
library(pixiedust)
dust(groupGrundALL) %>%
  sprinkle_print_method("html")
```

Я сильно склоняюсь к pixiedust (очевидно), но knitr::kable, вероятно, является самым быстрым способом работы с простыми таблицами уценки, которые не требуют особой настройки.

person Benjamin    schedule 21.10.2015
comment
отличный! Knitr::kable сделает всю работу за меня, но теперь я узнаю о вашем фантастическом пакете pixiedust... ...скоро задам вопрос :-) - person Andi Erni; 21.10.2015
comment
Обновление: Grmd теперь интегрирован в Gmisc, который доступен на CRAN. - person Lyngbakr; 21.05.2019