我正在尝试在R中编写函数,其目的是读取多个.csv文件。它们被命名为001.csv,002.csv,... 332.csv。
使用paste
我设法构造名称1.csv,2.csv等等,但是我在添加前导零时遇到了困难。有一个暗示,sprintf("%03d", 7)
之类的构造是必需的,但我不知道为什么以及如何工作。
那么有人可以解释以下陈述实际上可以做什么吗?
答案 0 :(得分:27)
sprintf
最初来自C,所有格式规则也都来自它。请参阅R中的?sprintf
或this或this参考,详细了解该主题。在这里,我将简要概述其背后的魔力。
"%03d"
是一个格式化字符串,用于指定7
的打印方式。
d
代表decimal integer
(不是double
!),因此它表示没有浮点或类似的东西,只是一个常规整数。3
显示打印数字的位数。更确切地说,该数字将至少 3位数:7
将为__7
(使用空格而不是下划线),但1000
将保留{{1}因为没有办法用3位数字写这个数字。1000
之前0
显示前导空格应替换为零。尝试使用3
,sprintf("%+3d", 7)
进行试验以查看其他可能的修饰符(它们称为标记)。话虽如此,sprintf("%-3d", 7)
的输出将是sprintf("%03d", 7)
。
答案 1 :(得分:0)
03d将至少输出3位数的输出...如果输出少于3位数,则将在开头添加零;如果输出超过3位数,则将仅打印输出。 如果输出(%d)= 2, 带有%3d的字符将被打印为= 002