[英]How to change number formatting to Indian Number System in R Shiny?
我正在尝试使用 Shiny 在 R 中构建仪表板,在其中一个值框输出中我显示了一个数字。 我想根据印度数字系统更改格式。 值框 output 当前显示数字为 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"
免责声明:我当然没有对此进行严格的测试,因此它可能有未涵盖的极端情况是可行的。 买者自负。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.