You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅修改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
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:37:12