将带前导零的数字传递给函数

时间:2013-01-13 19:22:30

标签: r

我正在尝试编写一个具有如下参数的函数:

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

当id值类似于009时,它将其打印为9.csv而不是009.csv。

我试过了:

id<-as.character(id)

这不起作用。有什么建议吗?

2 个答案:

答案 0 :(得分:9)

使用例如sprintf()

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

给出了

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

答案 1 :(得分:4)

虽然你已经接受了@Dirk的回答......

问题是您将输入作为数字传递。对于R,009评估为9

> 009
[1] 9

所以当你运行myfunction(009)时,它确实会运行myfunction(9)。你输出“9.csv”就不足为奇了。

相反,您应该将输入作为字符传递:“009”:

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