Подтвердить что ты не робот

Печать хороших кросс-таблиц в книжке

Я хочу напечатать красивые перекрестные ссылки, либо в pdf файле, либо в html файле, из RStudio, используя R, Markdown и knitr. Я подозреваю, что мне не хватает чего-то действительно очевидного, потому что я не могу поверить, что это так сложно. Я делаю cross-tabs с помощью xtabs или ftable.

То, что я хочу, это что-то вроде хорошо напечатанной версии вывода консоли R.

> x
   Col
Row  A  B  C
  D 15  9  7
  E 13 14  9
  F  8  8 17
> f
    Col  A  B  C
Row             
D       15  9  7
E       13 14  9
F        8  8 17

Я пробовал несколько различных решений, ни один из которых действительно не работает, и они показаны в прилагаемом файле .Rmd. (Я пробовал выходы pdf и html.)

---
title: "trial"
author: "Anthony Staines"
date: "26/08/2014"
output: html_document
---
# Make the data
```{r, echo=TRUE,results='asis',message=FALSE}
library(knitr)
library(memisc)
library(xtable)
library(stargazer)
library(texreg)

set.seed(893)
Col <- sample(c('A','B','C'),100,replace=TRUE)
Row <- sample(c('D','E','F'),100,replace=TRUE)
```

```{r, echo=TRUE,results='asis',message=FALSE}
x <- xtabs(~Row+Col)
x
kable(x)
kable(x,format='html')
kable(x,format='html',output = TRUE)
xx <- xtable(format(x))
print(xx,type='html')
stargazer(x)

f <-ftable(Row,Col)
f
kable(f,format='html')
kable(f,format='html',output = TRUE)
xf <- xtable(format(f))
print(xf,type='html')
stargazer(f)
```

kable подходит ближе всего, но, похоже, не поддерживает имена строк или столбцов, оба из которых необходимы для меня: -

|   |  A|  B|  C|
|:--|--:|--:|--:|
|D  | 15|  9|  7|
|E  | 13| 14|  9|
|F  |  8|  8| 17|

Помогите оценить, и мои извинения, если это действительно глупый вопрос с очевидным и хорошо известным ответом!

Энтони Стейнс

4b9b3361

Ответ 1

Я предлагаю вам использовать stargazer следующим образом:

  • Используйте quote=FALSE
  • Обязательно укажите type="html"

Попробуйте следующее:

# stargazer

```{r, echo=TRUE, results='asis'}
stargazer(format(f, quote=FALSE, justify="right"), type="html")
```

enter image description here

Ответ 2

Альтернативой kable является pander из пакета с тем же именем, что обеспечивает простой способ создания таблиц разметки с набором параметров (например, style) и общего метода S3:

> pander(x)

-------------------
&nbsp;   A   B   C 
------- --- --- ---
 **D**  15   9   7 

 **E**  13  14   9 

 **F**   8   8  17 
-------------------

> pander(f)

----- ----- --- --- ---
      "Col" "A" "B" "C"

"Row"                  

 "D"        15   9   7 

 "E"        13  14   9 

 "F"         8   8  17 
----- ----- --- --- ---

Если вы хотите сгенерировать старые таблицы rmarkdown -style pipe, добавьте параметр stlye='rmarkdown', хотя AFAIK Pandoc также является новым стандартом, который поддерживает вышеупомянутую многострочную таблицу.

Ответ 3

Дальнейшее копание привело меня к этому вопросу.

Ответ смущающе понятен - 'tables' package!

Я думал, что должен быть более простой способ сделать это. Большое спасибо, тем не менее, Андри и Дароциг за их полезные ответы.