为什么kableExtra cell_spec在条件格式化过程中会丢失尾随的小数点零?

为什么kableExtra cell_spec在条件格式化过程中会丢失尾随的小数点零?,r,conditional-formatting,kableextra,trailing,R,Conditional Formatting,Kableextra,Trailing,我喜欢有两个小数,这通常适用于kable。但是如果有一个单元格的条件为TRUE,则使用kableExtra进行条件格式设置不会显示尾随的零 MWE显示的情况是,如果值大于1.2,我会得到一个粗体单元格;如果值大于1.5,则没有粗体单元格。条件格式正在按预期工作。但在4个示例中的3个示例中,我丢失了尾随的零 任何原因(以及如何防止这种影响)的想法都是非常受欢迎的 # MWE kableExtra cell_spec loses trailing decimal zeros during condi

我喜欢有两个小数,这通常适用于kable。但是如果有一个单元格的条件为TRUE,则使用kableExtra进行条件格式设置不会显示尾随的零

MWE显示的情况是,如果值大于1.2,我会得到一个粗体单元格;如果值大于1.5,则没有粗体单元格。条件格式正在按预期工作。但在4个示例中的3个示例中,我丢失了尾随的零

任何原因(以及如何防止这种影响)的想法都是非常受欢迎的

# MWE kableExtra cell_spec loses trailing decimal zeros during conditional formatting

rm(list=ls())
library("knitr")
library("kableExtra") 
library("dplyr")


df <- data.frame(item=c(1 , 1.2, 1.23))

# Condition for cell-specification for each cell false
df[df$item>1.5,1] <- cell_spec (df[df$item>1.5,1], "html",bold=TRUE)

# output for each cell with two decimals
knitr::kable(df, digits=2,  escape=FALSE)
#MWE kableExtra cell_规范在条件格式设置期间丢失尾随的十进制零
rm(list=ls())
图书馆(“knitr”)
图书馆(“kableExtra”)
图书馆(“dplyr”)
df 1.5,1]1.5,1],“html”,粗体=真)
#每个单元格的输出为两个小数
knitr::kable(df,数字=2,转义=FALSE)
项目

1.00

1.20

1.23

df 1.2,1]1.2,1],“html”,粗体=TRUE)
#每个单元格的输出仅包含所需的小数,尾随的零丢失
knitr::kable(df,数字=2,转义=FALSE)
项目

一,

1.2

1.23

df <- data.frame(item=c(1 , 1.2, 1.23))
# alternative way loses trailing zeros whether condition is TRUE or FALSE 
df %>%
  transmute(cell_spec(df$item, bold=ifelse(df$item>1.5,"TRUE","FALSE"))) %>%
  kable( digits=2, escape=FALSE)
df%
转换(单元格规格(df$item,粗体=ifelse(df$item>1.5,“真”、“假”)))%>%
kable(数字=2,转义=FALSE)
单元格规格(dfitem,粗体=ifelse(dfitem>1.5,“真”、“假”))

一,

1.2

1.23

df%
转换(单元格规格(df$item,粗体=ifelse(df$item>1.2,“真”、“假”)))%%>
kable(数字=2,转义=FALSE)
单元格规格(dfitem,粗体=ifelse(dfitem>1.5,“真”、“假”))

一,

1.2


1.23

由于单元格规格项转换为字符后,会产生这种效果。在cell_spec之前创建另一列并转换为尾随为零的字符

df <- data.frame(item=c(1 , 1.2, 1.23))
# alternative way loses trailing zeros whether condition is TRUE or FALSE 
df %>%
  transmute(cell_spec(df$item, bold=ifelse(df$item>1.5,"TRUE","FALSE"))) %>%
  kable( digits=2, escape=FALSE)
然而,cell_spec的条件遵循原始值

df <- data.frame(item=c(1 , 1.2, 1.23))


df$itemCharacter <- as.character(formatC(df$item, digits = 2, format = 'f')) #new character variable with format specification

df[df$item>1.2,2] <- cell_spec (df[df$item>1.2,2], "html",bold=TRUE) #condition for cell_spec with the old variable, but assigned to the new variable

knitr::kable(df$itemCharacter, digits=2,  escape=FALSE) #output of the new variable

df在我看来像个bug。也许你可以在网上把它作为一个问题来报道?谢谢你的链接。它帮助我解决了这个问题。我会给出答案,并将其标记为已解决。
df <- data.frame(item=c(1 , 1.2, 1.23))


df$itemCharacter <- as.character(formatC(df$item, digits = 2, format = 'f')) #new character variable with format specification

df[df$item>1.2,2] <- cell_spec (df[df$item>1.2,2], "html",bold=TRUE) #condition for cell_spec with the old variable, but assigned to the new variable

knitr::kable(df$itemCharacter, digits=2,  escape=FALSE) #output of the new variable