大数字ggplot2 dollar_format产生科学记数法

时间:2012-04-17 21:50:27

标签: r ggplot2

在ggplot中使用新的dollar_format()语法,我得到了意想不到的行为。是否还有另一个论点要让sci-not消失?

x <- seq(0,100000,10000)
[1] 0e+00 1e+04 2e+04 3e+04 4e+04 5e+04 6e+04 7e+04 8e+04 9e+04 1e+05
dollar(x)
[1] "$0e+00" "$1e+04" "$2e+04" "$3e+04" "$4e+04" "$5e+04" "$6e+04" "$7e+04" "$8e+04" "$9e+04" "$1e+05"

2 个答案:

答案 0 :(得分:3)

请注意,dollar功能现在位于scales包中。您可以使用scipen选项阻止它切换到科学记数法。请注意,这将影响您的所有输出,而不仅仅是此格式。

> options(scipen=5)
> dollar(x)
 [1] "$0"       "$10,000"  "$20,000"  "$30,000"  "$40,000"  "$50,000"  "$60,000" 
 [8] "$70,000"  "$80,000"  "$90,000"  "$100,000"

正如@joran所说,dollar可能根本不应该允许科学记数法。

答案 1 :(得分:1)

根据我的评论,这样的事情应该有效:

dollar1 <- function (x) 
{
  x <- round_any(x, 0.01)
  nsmall <- if (max(x, na.rm = TRUE) < 100) 
    2
  else 0
  stringr::str_c("$", format(x, nsmall = nsmall, trim = TRUE, big.mark = ",",scientific = FALSE))
}

如果您不想直接使用str_c致电::,则需要确保已加载stringr库。