我想要的是使用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|
帮助表示感谢,如果这是一个非常愚蠢的问题并且有明显的知名答案,我表示歉意!
Anthony Staines
答案 0 :(得分:6)
来自具有相同名称的包的kable
的替代pander
,这提供了一种生成具有大量选项(如style
)和通用S3的降价表的简便方法方法:
> pander(x)
-------------------
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
样式管道表,请添加stlye='rmarkdown'
参数,尽管AFAIK Pandoc也是新标准,它支持上述多行表。
答案 1 :(得分:5)
我建议您使用stargazer
,如下所示:
quote=FALSE
type="html"
试试这个:
# stargazer
```{r, echo=TRUE, results='asis'}
stargazer(format(f, quote=FALSE, justify="right"), type="html")
```
答案 2 :(得分:3)
答案 3 :(得分:1)