输入不同的nchar矢量并输出为四位数

时间:2017-03-11 13:18:21

标签: r if-statement vector paste

我想写一个函数,一个矢量随机变为一到四位数,我想将它全部打印成四位数,如果矢量中没有足够数量的字符,我想添加在那个向量前面0。

Input:
x <- 1
x <- 12
x <- 123
x <- 1234

Output:
numb(x)
0001
numb(x)
0012
numb(x)
0123
numb(x)
1234

numb <- function(x) {{if(nchar(x) =4) { print(x) } 
else if (nchar(x) < 4) { y <- 4 - nchar(x) 
paste(nchar(y),x,sep="")}
} 

我不知道如何将1分为0,2分为00和3分为000,然后将其放入粘贴功能。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我们可以使用sprintf并指定fmt具有前导零(%04d

f1 <- function(num){
   sprintf("%04d", num)
}

f1(c(1, 12, 123, 1234))
#[1] "0001" "0012" "0123" "1234"

注意:前导零号码为character级而不是numeric/integer