在knitr中打印漂亮的交叉表格
我想要的是使用R、Markdown和knitr从RStudio打印漂亮的交叉表,可以是pdf文件,也可以是html文件。我怀疑我错过了一些非常明显的东西,因为我不敢相信这会如此困难。我用xtabs或ftable制作交叉标签 我想要的是一个打印精美的R控制台输出版本在knitr中打印漂亮的交叉表格,r,knitr,xtable,stargazer,R,Knitr,Xtable,Stargazer,我想要的是使用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
> 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输出。)
感谢您的帮助,如果这是一个非常愚蠢的问题,并且有一个显而易见的答案,我深表歉意
Anthony Staines我建议您使用
stargazer
如下:
- 使用
quote=FALSE
- 确保指定
type=“html”
# stargazer
```{r, echo=TRUE, results='asis'}
stargazer(format(f, quote=FALSE, justify="right"), type="html")
```
kable的另一种替代方法是使用同名软件包的
pander
,它提供了一种简单的方法来生成带有一系列选项(如样式
)的降价表和一种通用的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也是该表格的新标准,它支持上述多行表格。进一步挖掘使我想到
答案是显而易见的,令人尴尬的是——包裹
我认为必须有一个更简单的方法来做到这一点。尽管如此,非常感谢Andrie和daroczig的帮助回答。请考虑
gtsummary
软件包中的tbl\u cross
:
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)
种子集(893)
adfkable()
支持列名;关于行名称,它似乎不是HTML或LaTeX中表的标准组件,因此不清楚“支持”的真正含义。我同意HTML和LaTeX都不直接支持此类标签,但要使交叉标签有意义,这两者都是必需的。需求是生成一个可放入期刊文章的表。我现在实际做的是获取R控制台输出,并使用Libre Office中的table->Convert->Text-to-table函数将其转换为表,但这不是非常可重复的!试过了,效果很好-谢谢你的指导,非常感谢!pander向我提供了一个错误“if(!has.rownames(df)){:缺少需要TRUE/FALSE的值”pader::pander()打印交叉表的规则。谢谢开发人员。也尝试过了,而且效果很好-谢谢您的指导,非常感谢!如果您知道您的输出将仅为LaTeX,那么生成复杂的表相对容易,否则这不是一个小问题。很难实现可移植性(一个复杂的表格,可以使用降价、HTML、LaTeX和其他格式)。我开始欣赏这一点!你已经做的非常令人印象深刻,所以请接受我对你所有工作的感谢。
> 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
----- ----- --- --- ---
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")