2016-03-10 52 views
1

我有一個數字的列表:前綴零到號碼列表

> list1 <- c(1:10, 100, 1000) 
> list1 
[1] 1 2 3 4 5 6 7 8 9 10 100 1000 

我想相對於在列表中數量最多用零前綴號碼。我做這個功能:

prefix.zeros <- function(VECTOR){ 
    max_length <- nchar(max(VECTOR)) 
    retval  <- vector() 

    for (i in 1:length(VECTOR)){ 
    prefix  <- vector() 
    cur_length <- nchar(VECTOR[i]) 

    for(j in cur_length:(max_length-1)){ 
     if (cur_length == max_length){ 
     prefix <- "" 
     } 
     else if (cur_length < max_length){ 
     prefix <- c(prefix,"0") 
     } 
    } 
    retval <- c(retval, paste0(paste0(prefix, collapse = ""), VECTOR[i], collapse = "")) 
    } 
    retval 
} 

這是工作的罰款:

> prefix.zeros(list1) 
[1] "0001" "0002" "0003" "0004" "0005" "0006" "0007" "0008" "0009" "0010" "0100" 
[12] "1000" 

但我不知道是否有更優雅(R-方式)的方式?

+0

(取最好在之前的評論不很明顯,什麼是最適合每一種情況下是高度依賴於你的情況下) – Tensibai

+0

將永遠在那裏的非整數? –

回答

4
sprintf(paste0("%0", max(nchar(list1)), "d"), list1) 
# [1] "0001" "0002" "0003" "0004" "0005" "0006" "0007" "0008" "0009" "0010" "0100" "1000"