5

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

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

当 id 值是这样的 009 时,它会将其打印为 9.csv 而不是 009.csv。

我试过这个:

id<-as.character(id)

这是行不通的。有什么建议么?

4

2 回答 2

9

使用例如sprintf()

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

这使

R> cat(myfunction(9), "\n")
009.csv 
R> cat(myfunction(199), "\n")
199.csv 
R> 
于 2013-01-13T19:26:48.987 回答
4

尽管您已经接受了@Dirk 的回答...

问题是您将输入作为数字传递。对于 R,009计算结果为9

> 009
[1] 9

所以当你跑的时候myfunction(009),它真的跑了myfunction(9)。你得到“9.csv”作为你的输出应该不足为奇。

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

> myfunction("009")
[1] "009.csv"
于 2013-01-13T23:07:29.070 回答