sprintf("%03d",7)功能的说明?

时间:2014-05-18 05:45:53

标签: r csv printf paste

我正在尝试在R中编写函数,其目的是读取多个.csv文件。它们被命名为001.csv,002.csv,... 332.csv。

使用paste我设法构造名称1.csv,2.csv等等,但是我在添加前导零时遇到了困难。有一个暗示,sprintf("%03d", 7)之类的构造是必需的,但我不知道为什么以及如何工作。

那么有人可以解释以下陈述实际上可以做什么吗?

2 个答案:

答案 0 :(得分:27)

sprintf最初来自C,所有格式规则也都来自它。请参阅R中的?sprintfthisthis参考,详细了解该主题。在这里,我将简要概述其背后的魔力。

"%03d"是一个格式化字符串,用于指定7的打印方式。

  • d代表decimal integer(不是double!),因此它表示没有浮点或类似的东西,只是一个常规整数。
  • 3显示打印数字的位数。更确切地说,该数字将至少 3位数:7将为__7(使用空格而不是下划线),但1000将保留{{1}因为没有办法用3位数字写这个数字。
  • 1000之前
  • 0显示前导空格应替换为零。尝试使用3sprintf("%+3d", 7)进行试验以查看其他可能的修饰符(它们称为标记)。

话虽如此,sprintf("%-3d", 7)的输出将是sprintf("%03d", 7)

答案 1 :(得分:0)

03d将至少输出3位数的输出...如果输出少于3位数,则将在开头添加零;如果输出超过3位数,则将仅打印输出。 如果输出(%d)= 2, 带有%3d的字符将被打印为= 002