在 R 中将数字 1000 格式化为 1k,1000000 格式化为 1m 等

Nib*_*ced 4 r number-formatting

我需要使用缩写来显示数字,如下所示

1 shows as 1
999 shows as 999
1000 shows as 1K
999000 shows as 999K
1000000 shows as 1M
1500000 shows as 1.5M
1000000000 shows as 1G
etc...
Run Code Online (Sandbox Code Playgroud)

我在 stackoverflow 上看到过其他语言提出的问题(对于 Javascript 至少有三次):

使用公制前缀(如 1.5K、1M、1G 等)格式化 JavaScript 数字

如果数字为 1000,则将数字格式化为 2.5K,否则为 900

如何格式化类似于 Stack Overflow 信誉格式的数字

oracle查询中1000000转1M和1000转1K

1000 至 1k、1000000 至 1m 等数字缩写

...但我无法找到 R 的任何内容。我错过了什么吗?

sin*_*dur 6

使用dplyr::case_when

so_formatter <- function(x) {
  dplyr::case_when(
      x < 1e3 ~ as.character(x),
      x < 1e6 ~ paste0(as.character(x/1e3), "K"),
      x < 1e9 ~ paste0(as.character(x/1e6), "M"),
      TRUE ~ "To be implemented..."
  )
}

test <- c(1, 999, 1000, 999000, 1000000, 1500000, 1000000000, 100000000000)
so_formatter(test)


# [1] "1"                   
# [2] "999"                 
# [3] "1K"                  
# [4] "999K"                
# [5] "1M"                  
# [6] "1.5M"                
# [7] "To be implemented..."
# [8] "To be implemented..."
Run Code Online (Sandbox Code Playgroud)