2016-08-19 6 views
0

小数点の両側で出力を簡単にフォーマットできるsprintfのようなR関数を探しています。私は%04dが整数のために働くことを知っています。%04dは10進数の前に10進数を書式化し、%04fは小数点以下10進数を書式化しますが、私は各面に書式を設定するエレガントな方法を描くことはできません恐ろしい方法の数)。簡単な方法はありますか?私の希望する出力:小数点の両側で桁の長さを強制する書式設定関数

1 becomes 01.00 
4.2 becomes 04.20 
12.3 becomes 12.30 
42.42 remains as is 

ありがとう!!

答えて

2

としては十分である@nrussell Rのsprintf()機能が指摘:フォーマット指定に

sprintf("%05.2f",x) 

配列05.2は、浮動小数点(f)として表される数値の出力がパディングされるべきであることを示します0とし、結果の文字列に少なくとも5文字が含まれ、小数点の後に2桁の数字が表示されるようにします。


より複雑なバージョンがstringrパッケージからstr_pad()機能とそれを組み合わせることであろう。このケースでは、sprintf()のみを使用するソリューションに比べて利点はありません。私は完全性のためにそれを追加しています。それは私が思いついた解決策だったからです。

x <- c(1, 4.2, 12.3, 42.42) 
stringr::str_pad(sprintf("%.2f",x), 5, pad="0") 
#[1] "01.00" "04.20" "12.30" "42.42" 

「5」str_pad()関数に渡される引数は、文字列の長さ(幅)を示しています。

+1

また、 'sprintf("%05.2f "、...)'はうまく動作するはずです。 – nrussell

+0

@nrussellありがとうございます。バマー。私はsprintfで十分だろうと思ったが、少なくともそれは答えの最初のバージョンだった。どういうわけか、先行ゼロを含めるオプションが欠けていました。あなたはこれを答えとして掲示しなければなりません、私はこれのためのクレジットに値するものではありません。 – RHertel

+1

それは大丈夫です。答えを書くような気がしません。 'printf'の先頭と末尾の数字の構文は、少し混乱します。 <パディング文字><<小数点を含む総桁数><.><小数点以下の桁数> – nrussell

関連する問題