2014/09/14
R > 指数表記で 3.00e+08 とかする方法
R > 指数表記で 3.00e+08 とかする方法
物理や化学の定数を、計算の簡単のため数桁に丸める時があります。例えば光速は毎秒 299,792,458 メートルですが 3.00×108 m/s にするなど。
ところが R で数値を丸める signif 関数や、書式設定用の format 関数および formatC 関数を使うと ↓ すべて 3.00 が 3 になってしまいます。(バージョン 2.15.3)
signif(299792458, digits=3)
format(299792458, digits=3)
formatC(299792458, digits=3)
format と formatC の関数の違いは知りませんが、三つとも同じ結果なので R はそういうものだと思ってました。ところが最近、sprintf 関数だけはきちんとなることが判明。
sprintf('%.2e', 299792458)
なお PostgreSQL では、書式が少し違いますが to_char 関数でできます。
SELECT to_char(299792458, '9.99EEEE') ;
以上、昨日に続いて R の細かい話でした。
ところが R で数値を丸める signif 関数や、書式設定用の format 関数および formatC 関数を使うと ↓ すべて 3.00 が 3 になってしまいます。(バージョン 2.15.3)
signif(299792458, digits=3)
format(299792458, digits=3)
formatC(299792458, digits=3)
format と formatC の関数の違いは知りませんが、三つとも同じ結果なので R はそういうものだと思ってました。ところが最近、sprintf 関数だけはきちんとなることが判明。
sprintf('%.2e', 299792458)
なお PostgreSQL では、書式が少し違いますが to_char 関数でできます。
SELECT to_char(299792458, '9.99EEEE') ;
以上、昨日に続いて R の細かい話でした。