如何仅修改kable部分行的小数位数并保留指定分隔符
解决方案
要实现指定行显示不同小数位,同时保留千位(点)和小数(逗号)分隔符,你可以通过按行条件格式化数值列并转为格式化后的字符型来实现(数值型列无法单独为不同行设置不同小数位),具体代码修改如下:
--- title: "kble" output: flexdashboard::flex_dashboard: orientation: columns vertical_layout: fill runtime: shiny --- ```{r global, include=FALSE} library(flexdashboard) library(tidyverse) library(shiny) library(kableExtra) library(janitor)
Title...
Inputs {.sidebar data-width=400}
x1 <- c("rojo","verde","azul","amarillo") x2 <- c(30000,300,30.3,3.22) df1<- data.frame(x1,x2) # 按行条件格式化x2列,指定分隔符和小数位 df1_formatted <- df1 %>% mutate(x2 = case_when( x1 %in% c("rojo", "verde") ~ formatC(x2, format = "f", digits = 0, decimal.mark = ",", big.mark = "."), x1 == "azul" ~ formatC(x2, format = "f", digits = 1, decimal.mark = ",", big.mark = "."), x1 == "amarillo" ~ formatC(x2, format = "f", digits = 2, decimal.mark = ",", big.mark = ".") )) # 生成表格 df1_formatted %>% knitr::kable(caption = "Title", align = "cc") %>% kable_styling("striped","hover",full_width = F)
### 关键说明: - 用`case_when`针对不同`x1`值的行,调用`formatC`设置对应小数位: - "rojo"和"verde"行设`digits=0`(无小数位) - "azul"行设`digits=1`(保留1位小数) - "amarillo"行设`digits=2`(保留2位小数) - `formatC`的`decimal.mark = ","`和`big.mark = "."`参数直接指定了所需的分隔符格式 - 转为字符型后,kable可直接渲染格式化后的文本,无需额外设置`format.args` 内容的提问来源于stack exchange,提问作者Natalias
相关产品推荐
相关产品推荐

