我正在尝试编写一个具有如下参数的函数:
myfunction<-function(id){
print(paste(id, ".", "csv", sep=""))
}
当 id 值是这样的 009 时,它会将其打印为 9.csv 而不是 009.csv。
我试过这个:
id<-as.character(id)
这是行不通的。有什么建议么?
我正在尝试编写一个具有如下参数的函数:
myfunction<-function(id){
print(paste(id, ".", "csv", sep=""))
}
当 id 值是这样的 009 时,它会将其打印为 9.csv 而不是 009.csv。
我试过这个:
id<-as.character(id)
这是行不通的。有什么建议么?
使用例如sprintf()
:
myfunction <- function(id) {
sprintf("%03d.csv", id)
}
这使
R> cat(myfunction(9), "\n")
009.csv
R> cat(myfunction(199), "\n")
199.csv
R>
尽管您已经接受了@Dirk 的回答...
问题是您将输入作为数字传递。对于 R,009
计算结果为9
:
> 009
[1] 9
所以当你跑的时候myfunction(009)
,它真的跑了myfunction(9)
。你得到“9.csv”作为你的输出应该不足为奇。
相反,您应该将输入作为字符传递:“009”:
> myfunction("009")
[1] "009.csv"