18

我想要的是使用 R、Markdown 和 knitr 从 RStudio 以 pdf 文件或 html 文件的形式打印漂亮的交叉表。我怀疑我遗漏了一些非常明显的东西,因为我不敢相信这会这么难。我使用 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|

感谢您的帮助,如果这是一个非常愚蠢的问题,并且答案很明显且众所周知,我深表歉意!

安东尼·斯坦斯

4

4 回答 4

8

An alternative to kable is pander from the package with the same name, which provides an easy way of generating markdown tables with bunch of options (like style) and a generic S3 method:

> 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 
----- ----- --- --- ---

If you want to generate the old rmarkdown-style pipe tables, add stlye='rmarkdown' parameter, although AFAIK Pandoc is the new standard there as well, which supports the above multi-line table.

于 2014-08-27T11:41:38.947 回答
7

我建议你使用stargazer如下:

  • 利用quote=FALSE
  • 确保指定type="html"

尝试这个:

# stargazer

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

在此处输入图像描述

于 2014-08-27T11:19:38.113 回答
3

进一步挖掘使我想到了这个问题

答案非常明显—— 'tables'包!

我认为必须有一种更简单的方法来做到这一点。尽管如此,还是非常感谢 Andrie 和 daroczig 的有益回应。

于 2014-09-01T20:39:25.603 回答
1

tbl_crossgtsummary包中考虑:

library(gtsummary)

set.seed(893)
adf <- data.frame(Col = sample(c('A','B','C'),100,replace=TRUE),
                  Row = sample(c('D','E','F'),100,replace=TRUE))
tbl_cross(adf, row=Row, col=Col, percent="row")

gtsummary tbl_cross HTML 交叉表示例

于 2021-01-19T16:34:58.700 回答