2012-04-17 9 views
2

ggplotで新しいdollar_format()構文を使用すると、予期しない動作が発生します。スクーを作るために渡すべきもう一つの議論はありますか?ggplot2 dollar_formatが大きいと科学的表記

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" 
+1

これはバグかもしれません。 'format'の呼び出しはおそらく' scientific = FALSE'を指定するべきです。 – joran

+0

この動作は 'scales'の次のリリース(これは' ggplot2'の次のリリースより遅くなりません)で発生しなくなりました:https://github.com/hadley/scales/pull/17 –

+0

があなたに気づきましたこれをgithubに追加しました。ありがとう、ブライアン。 – jlemaitre

答えて

3

ここで、dollar関数はscalesパッケージに含まれています。 scipenオプションを使用して科学記法に切り替えることはできません。これは、この書式設定だけでなく、すべての出力に影響を与えることに注意してください。 @joranが言ったように

> 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" 

は、しかし、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)) 
} 

あなたはstringrライブラリがロードされていることを確認する必要があります::を使用して直接str_cを呼び出すにしたくない場合。

関連する問題