【发布时间】:2016-01-23 07:17:50
【问题描述】:
可重现的例子:
我有一个数据框,它带有标记变量以使用 sjmisc 包表示单位,自 v0.4.2 以来,它与 dplyr 很好地配合使用。
library(dplyr)
library(sjmisc)
library(ggplot2)
data("diamonds")
df= tbl_df(diamonds) %>%
select(cut, carat, color, price) %>%
set_label(c("", "Kt", "Type","EUR")) %>%
slice(1:5)
正如str(df) 所示,它正确包含三列标签:
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 5 obs. of 4 variables:
$ cut : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2
$ carat: atomic 0.23 0.21 0.23 0.29 0.31
..- attr(*, "label")= Named chr "Kt"
.. ..- attr(*, "names")= chr "carat"
$ color: Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7
..- attr(*, "label")= Named chr "Type"
.. ..- attr(*, "names")= chr "color"
$ price: atomic 326 326 327 334 335
..- attr(*, "label")= Named chr "EUR"
.. ..- attr(*, "names")= chr "price"
还有R-Studio IDE 我可以看到标签View(df)。
现在我想使用knitr 中的kable 函数通过knitr/rmarkdown/html 工具链将这个数据框打印为html,并将以下代码作为.Rmd rmarkdown 文件。
---
title: "Table with labels"
output: html_document
---
```{r include=FALSE}
library(dplyr)
library(sjmisc)
library(ggplot2)
library(knitr)
data("diamonds")
```
## Example
```{r echo=FALSE, results='asis'}
df= tbl_df(diamonds) %>%
select(cut, carat, color, price) %>%
set_label(c("", "Kt", "Type","EUR")) %>%
slice(1:5)
kable(df)
```
这会导致一个包含下表的html:
问题:
很遗憾,单位的标签没有用作标题中的第二行。
问题:
如何将“克拉”下方的“Kt”、“颜色”下方的“类型”和“价格”下方的“欧元”作为第二个标题行?第二行应与第一行具有相同的水平居中。
我正在寻找一种解决方案,无需手动将标签手动添加到第二行,它应该自动将标签应用于打印的表格。如果可能,单位标签的字体大小应比第一行标题行小一点,或者没有粗体。
如何重写kable(在这种情况下用于 html 输出)以满足这些要求并与标记的数据帧一起使用?
【问题讨论】:
-
我认为这太宽泛了。
kable实际上是多个程序,您的要求似乎比期望紧凑解决方案的合理要求更多。看代码。您可以看到 kable 实际上调用了 4 个独立程序之一:res = do.call(paste("kable", format, sep = "_"),其中格式是以下之一:“markdown”、“latex”、“html”、“rst”。 -
什么?这不是exactly the same question,除了输出格式是HTML,另一个问题是PDF?这不会使此问题重复,但请在下次提问时将此类信息添加到问题中。
标签: html r knitr r-markdown