当我尝试在列名中使用knitr::kable
函数"id“字apperas打印表时。我怎么才能改变呢?
示例:
> x <- structure(c(42.3076923076923, 53.8461538461538, 96.1538461538462,
2.56410256410256, 1.28205128205128, 3.84615384615385,
44.8717948717949, 55.1282051282051, 100),
.Dim = c(3L, 3L),
.Dimnames = structure(list(Condition1 = c("Yes", "No", "Sum"),
Condition2 = c("Yes", "No", "Sum")),
.Names = c("Condition1", "Condition2")), class = c("table", "matrix"))
> print(x)
Condition2
Condition1 Yes No Sum
Yes 42,31 2,56 44,87
No 53,85 1,28 55,13
Sum 96,15 3,85 100,00
> library(knitr)
> kable(x)
|id | Yes| No| Sum|
|:----|-----:|-----:|------:|
|Yes | 42,3| 2,56| 44,9|
|No | 53,8| 1,28| 55,1|
|Sum | 96,2| 3,85| 100,0|
编辑:我在knitr:::kable_mark
函数中找到了这种行为的原因。但现在我不知道如何使它更加灵活。
发布于 2013-11-09 15:33:15
我认为最简单的方法是把kable_mark
完全删除并替换掉。注意:这是相当脏的-但它似乎是有效的,并且没有当前的方式来定制kable_mark
如何工作(您可以提交一个补丁给针织品)。
km <- edit(knitr:::kable_mark)
# Now edit the code and remove lines 7 and 8.
unlockBinding('kable_mark', environment(knitr:::kable_mark))
assign('kable_mark', km, envir=environment(knitr:::kable_mark))
说明:首先,我们编辑函数并将修改后的定义存储在一个临时变量中。我们移除这两条线
if (grepl("^\\s*$", cn[1L]))
cn[1L] = "id"
…当然,您也可以对修改后的函数进行硬编码,而不是对其进行编辑,或者将函数完全更改。
接下来,我们使用unlockBinding
使knitr:::kable_mark
可以被覆盖。如果我们不这样做,下一个assign
命令就无法工作。
最后,我们将补丁函数赋值给knitr:::kable_mark
。好了。
发布于 2013-11-09 21:19:59
kable
的一个替代方法可能是pander
的通用S3方法。
> library(pander)
> pander(x, style = 'rmarkdown')
| | Yes | No | Sum |
|:---------:|:-----:|:-----:|:-----:|
| **Yes** | 42.31 | 2.564 | 44.87 |
| **No** | 53.85 | 1.282 | 55.13 |
| **Sum** | 96.15 | 3.846 | 100 |
如果需要将十进制标记设置为逗号,那么在R会话中设置相关选项并使用该选项:
> panderOptions('decimal.mark', ',')
> pander(x, style = 'rmarkdown')
| | Yes | No | Sum |
|:---------:|:-----:|:-----:|:-----:|
| **Yes** | 42,31 | 2,564 | 44,87 |
| **No** | 53,85 | 1,282 | 55,13 |
| **Sum** | 96,15 | 3,846 | 100 |
还有其他一些可能的调整:http://rapporter.github.io/pander/#pander-options
https://stackoverflow.com/questions/19875529
复制相似问题