繁体   English   中英

如何在 R Shiny 中将数字格式更改为印度数字系统?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM