我使用knit::kable
和pander::pandoc
打印频率表,通常这适用于HTML / Word / LaTeX输出。但有时我想在最终产品中保留尺寸名称。不幸的是,转换为降价时,pander
和knitr
都会丢弃这些内容。
# create a simple table
tab <- table(mtcars$gear, mtcars$carb)
# add dimension names
names(dimnames(tab)) <- c("gear", "carb")
这会创建一个表:
carb
gear 1 2 3 4 6 8
3 3 4 3 5 0 0
4 4 4 0 4 0 0
5 0 2 0 1 1 1
但是现在如果我们打印,比如,kable:
> kable(tab)
| | 1| 2| 3| 4| 6| 8|
|:--|--:|--:|--:|--:|--:|--:|
|3 | 3| 4| 3| 5| 0| 0|
|4 | 4| 4| 0| 4| 0| 0|
|5 | 0| 2| 0| 1| 1| 1|
没有尺寸名称! (?kable
并未指出任何包含它们的选项。)
有关保留这些内容的工具的任何建议吗?我注意到descr:CrossTable
可以解决问题,但包含了一些我想省略的额外信息。
非常感谢。
答案 0 :(得分:6)
您可以使用例如ftable
隐式创建具有维度名称的平面列联表:
> pander::pander(ftable(tab))
---- ---- - - - - - -
carb 1 2 3 4 6 8
gear
3 3 4 3 5 0 0
4 4 4 0 4 0 0
5 0 2 0 1 1 1
---- ---- - - - - - -
或者您也可以从descr::CrossTable
中删除不需要的单元格,例如:
> pander(descr::CrossTable(tab, prop.r = FALSE, prop.c = FALSE, prop.chisq = FALSE))
------------------------------------------------------------------------------
\ carb\ \ \ \ \ \ \
gear 1 2 3 4 6 8 Total
--------- -------- --------- --------- --------- --------- --------- ---------
**3**\ \ \ \ \ \ \ \
N\ 3\ 4\ 3\ 5\ 0\ 0\ 15\
Total(%) 9.375% 12.500% 9.375% 15.625% 0.000% 0.000%
**4**\ \ \ \ \ \ \ \
N\ 4\ 4\ 0\ 4\ 0\ 0\ 12\
Total(%) 12.500% 12.500% 0.000% 12.500% 0.000% 0.000%
**5**\ \ \ \ \ \ \ \
N\ 0\ 2\ 0\ 1\ 1\ 1\ 5\
Total(%) 0.000% 6.250% 0.000% 3.125% 3.125% 3.125%
Total 7 10 3 10 1 1 32
------------------------------------------------------------------------------
或者在GH上提交票证:)