r - 如何在 R Shiny 中将数字格式更改为印度数字系统?
问题描述
我正在尝试使用 Shiny 在 R 中构建仪表板,在其中一个值框输出中我显示了一个数字。我想根据印度数字系统更改格式。值框输出当前显示的数字为 123,456,789,我想将其表示为 12,34,56,789。
如果需要更多信息,请告诉我,任何帮助将不胜感激。
解决方案
这是一个快速破解,允许进一步使用format
大多数其他功能。它所做的唯一干预是检查是否有有效数字需要保证
format2 <- function(x, ..., big.mark = "", big.interval = c(3L, 2L), decimal.mark = ".") {
intervene <- (log(abs(x), 10) >= sum(big.interval)) && nzchar(big.mark)
cl <- match.call()
cl[[1]] <- substitute(format)
if (intervene) {
cl$x <- x %/% 10^big.interval[1]
cl$big.interval <- big.interval[2]
bigx <- eval.parent(cl)
cl$x <- x
cl$big.interval <- big.interval[1]
mostx <- eval.parent(cl)
mostx <-
substr(mostx,
1L + nchar(x %/% 10^big.interval[1]) +
trunc(trunc(log(abs(x %/% 10^big.interval[1]), 10L)) / big.interval[1]),
nchar(mostx))
return( paste0(bigx, mostx) )
} else eval.parent(cl)
}
format2(123456789)
# [1] "123456789"
format2(12345, big.mark = ",") # no intervene necessary
# [1] "12,345"
format2(123456789, big.mark = ",")
# [1] "12,34,56,789"
format2(1e6 + pi, big.mark = ",")
# [1] "10,00,003"
format2(1e6 + pi, big.mark = ",", digits = 22)
# [1] "10,00,003.1415926536"
format2(1e6 + pi, big.mark = ",", digits = 22, small.mark = ",")
# [1] "10,00,003.14159,26536"
免责声明:我当然没有对此进行严格的测试,因此它可能有未涵盖的极端情况是可行的。买者自负。
推荐阅读
- git - RStudio 未在安装 Git 的情况下加载
- python-behave - 如何处理 Behave 中的常见步骤
- html - PowerShell 将 html 标签“<”和“>”转换为“<”和“>”
- bixby - 如何检查 Bixby 布局视图中是否存在文本值内容
- php - PDOException: SQLSTATE[HY000] [2002] 操作正在进行,在 php artisan queue:work
- swagger - MicroElements.Swashbuckle.FluentValidation AddFluentValidationRules 使用命令处理程序模式
- php - 未使用 phpSpreadSheet 库在现有工作簿中创建新工作表
- angular - 如何在角度项目中调整 kendo Splitter 的活动大小?
- ios - 具有关联值的枚举数据模型
- java - Openssl 公钥\私钥跨操作系统平台支持