2013-01-13 79 views
5

我嘗試寫有一個參數像下面的函數:傳遞一個數字有前導零的功能

myfunction<-function(id){ 
print(paste(id, ".", "csv", sep="")) 
} 

當id的值是這樣的009,它打印它作爲9.csv不是009 .csv格式。

我嘗試這樣做:

id<-as.character(id) 

這是行不通的。有什麼建議麼?

回答

9

使用例如sprintf()

myfunction <- function(id) { 
    sprintf("%03d.csv", id) 
} 

這給

R> cat(myfunction(9), "\n") 
009.csv 
R> cat(myfunction(199), "\n") 
199.csv 
R> 
4

雖然你已經接受了@德克的回答......

問題是你是通過你輸入的數字。對於R,009計算爲9

> 009 
[1] 9 

所以當你運行myfunction(009),它確實運行myfunction(9)。將「9.csv」作爲輸出結果應該不足爲奇。

相反,你應該通過你輸入的字符:「009」:

> myfunction("009") 
[1] "009.csv" 
+0

雖然這部作品在這個例子中,問題是,你不會總是能夠從參數輸入命令行並添加「」,有時該函數將從另一個無法控制的函數中調用,並且不會添加「」,只是009,並且您必須確保函數不會變爲9。這是我正在尋找的答案(並將我帶到這裏) – chrisfs

相關問題