2014-05-18 95 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