以印度货币格式设置数字格式

Anu*_*pam 5 formatting currency r

印度货币格式每 2 位数字后使用逗号分隔符,最后一部分除外(3 位数字)。有人可以建议 R 中的一个函数可以实现这一目标吗?

例子:

input 12345678.23 output 1,23,45,678.23
i/p: 4356, o/p: 4,356
i/p: 435, o/p: 435
Run Code Online (Sandbox Code Playgroud)

All*_*ron 4

我不知道有什么本地方法可以做到这一点,但以下函数将为您实现它:

nums <- function(n) {
  dec <- round(n %% 1, 2)
  dec <- ifelse(dec < 0.01, "", substr(dec, 2, 4))
  int <- n %/% 1
  ints <- vapply(int, function(x) {
    x <- as.character(x)
    len <- nchar(x)
    if(len <= 3) return(x)
    rev_x <- paste(rev(unlist(strsplit(x, ""))), collapse = "")
    str   <- paste0(substr(rev_x, 1, 3), ",")
    str2  <- substr(rev_x, 4, 100)
    str2  <- gsub("(\\d{2})", "\\1,", str2)
    rev_x <- paste0(str, str2)
    return(paste(rev(unlist(strsplit(rev_x, ""))), collapse = ""))
  }, character(1))

  return(sub("^,", "", paste0(ints, dec)))
}
Run Code Online (Sandbox Code Playgroud)

你可以这样使用它:

nums(c(1234.12, 342, 35123251.12))
#> [1] "1,234.12"       "342"            "3,51,23,251.12"
Run Code Online (Sandbox Code Playgroud)