2014-05-18 59 views
6

我想在R中编写函数,其目的是读取多个.csv文件。它们被命名为001.csv,002.csv,... 332.csv。sprintf(“%03d”,7)功能的解释?

随着paste我设法建立名称1.csv,2.csv等,但我很难添加前导零。有迹象表明像sprintf("%03d", 7)这样的建筑是必需的,但我不知道为什么以及如何运作。

那么有人可以解释下面的声明实际上可以做什么吗?

+3

您是否阅读过“?sprintf”帮助页面?有没有一个特定的部分对你不清楚? – MrFlick

回答

20

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

"%03d"是格式化字符串,它指定如何打印7

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

谢谢你的这个;优秀和简洁。很有帮助! – Aron

+0

@Aron谢谢 - 永远是一种享受! – tonytonov