複数の.csvファイルを読み取ることを目的とした関数をRで記述しようとしています。それらの名前は001.csv、002.csv、... 332.csvです。
paste
を使用して、1.csv、2.csvなどの名前を作成できましたが、先行ゼロを追加するのに問題があります。 sprintf("%03d", 7)
のような構造が必要であるというヒントがありますが、これがなぜ、どのように機能するのかわかりません。
では、誰かが次のステートメントで実際に何ができるかを説明できますか?
sprintf
は元々Cからのものであり、すべてのフォーマット規則もCから取得されます。主題の詳細については、Rの_?sprintf
_または this または this リファレンスを参照してください。ここでは、その背後にある魔法の概要を簡単に説明します。
_"%03d"
_は、_7
_の印刷方法を指定するフォーマット文字列です。
d
は_decimal integer
_(double
!ではない)を表すため、浮動小数点などはなく、通常の整数のみであると表示されます。3
_は、印刷された数値の桁数を示します。より正確には、数値は少なくとも3桁になります:_7
_は___7
_(アンダースコアの代わりにスペースを使用)、ただし、この番号を3桁だけで書き込む方法がないため、_1000
_は_1000
_のままになります。0
_の前の_3
_は、先頭のスペースをゼロに置き換える必要があることを示しています。 sprintf("%+3d", 7)
、sprintf("%-3d", 7)
を試して、他の可能な修飾子を確認してください(これらはflagsと呼ばれます)。そうは言っても、sprintf("%03d", 7)
からの出力は_007
_になります。
03dは最小3桁の出力を出力します...出力が3桁未満の場合、最初にゼロを追加します。出力が1桁を超える場合は、単に出力を出力します。 output(%d)= 2の場合、%3dは= 002として出力されます。