在rmarkdown中使用kable打印因子的频率表

Bum*_*Bee 4 r knitr r-markdown pander

我在R中有一个因子,它由a,b和c级组成.数据由2个a,1个b和无c组成.我想获得这样的输出(根据级别的元素的频率):

fac <- factor(c("a", "b", "a"), levels=c("a", "b", "c"))
tbl <- table(fac)
tbl

## fac
## a b c 
## 2 1 0
Run Code Online (Sandbox Code Playgroud)

这应该在一个漂亮的html表格中用knitr/kable打印:

library(knitr)
kable(tbl)
Run Code Online (Sandbox Code Playgroud)

但是这里出现了错误:

"Error in dn[[2L]] : subscript out of bounds".
Run Code Online (Sandbox Code Playgroud)

我假设表的dimnames存在问题:

attributes(tbl)
## $dim
## [1] 3
## 
## $dimnames
## $dimnames$fac
## [1] "a" "b" "c"
## 
## 
## $class
## [1] "table"
Run Code Online (Sandbox Code Playgroud)

有没有选择"修复"kable的dimnames?我只是想打印这个"简单"的表 - 也许我被困在一些简单的东西?

这里描述了使用"表格"的因素:http://www.stat.berkeley.edu/~s133/factors.html

最近几天我读了很多关于'pander'包的内容.如果我用平移器打印表,它可以工作.为什么?我应该切换到迎合?

pander(tbl)
Run Code Online (Sandbox Code Playgroud)

RHe*_*tel 5

你可以试试

> kable(t(as.matrix(tbl)))
#
#|  a|  b|  c|
#|--:|--:|--:|
#|  2|  1|  0|
Run Code Online (Sandbox Code Playgroud)

  • `table`格式并不总是非常实用.因此,如果要进一步处理输出,则将表转换为矩阵或数据帧通常是方便的. (2认同)