与kableExtra

问题描述

我无法在kableExtra中与表格单元格中的formattable的条形图相结合得到左对齐的数字。

以rmarkdown格式复制的代码


标题:“无标题输出:html_document

knitr::opts_chunk$set(echo = TRUE)

library("formattable")
library("kableExtra")

示例

summary(cars)
cars$speed <- cars$speed * 100

获得一张漂亮的桌子

表的第一列充满了小条形图。 所有代码均遵循kableExtra的http://haozhu233.github.io/kableExtra/awesome_table_in_html.html手册编写。

plot.table <- cars
# need to modify the first few values to make sure the effect is visible.
plot.table$speed[1] <- 3
plot.table$speed[2] <- 25
plot.table$speed[3] <- 100

plot.table$speed <- color_bar("lightgreen")(plot.table$speed)

kbl(x = plot.table,escape = F) %>%
  kable_styling(bootstrap_options = c("striped","hover"),fixed_thead = T)

前三行显示的值与表中其余值相比较小。 这会使它们的条形变短,并导致怪异的数字对齐。对齐是根据绿色条的最右端完成的。

检查相应的html元素(例如FireFox“ Inspect Element”)会发现元素“ direction”为“ rtl”,这似乎是kableExtra中的认设置。 手动将此参数的值修改为“ ltr”,会产生很好的左对齐值,该值沿钢筋的末端延伸。

Table with barplot formatting

不幸的是,我无法在color_bar中找到参数来修改此行为。

任何帮助我指出一种使数值保持一致的方法,将不胜感激。

解决方法

正如@juljo提到的,显然需要修改各自的功能。该函数的主体可以从包装内容中复制出来。

f.color_bar <- function (color = "lightgray",fun = "proportion",...) 
{
    fun <- match.fun(fun)
    formattable::formatter("span",style = function(x) style(display = "inline-block",direction = "ltr",`border-radius` = "4px",`padding-right` = "2px",`background-color` = csscolor(color),width = percent(fun(as.numeric(x),...))))
}

此代码对从左到右的行为进行了硬编码,但在这里也不可变。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...