如何在R数据帧中添加不同长度的前导零

esp*_*p23 3 r dataframe

我有一个数据框,其中行名称的总位数不同。有 152 行。当不同行需要不同数量的潜在客户以达到最大 8 位时,如何添加前导零?

row.names
4921103 
42106   
19562106    
11102
3435467
Run Code Online (Sandbox Code Playgroud)

akr*_*run 7

我们可以试试sprintf(假设例子中的 row.names 是数字)

sprintf("%08d", df1$row.names)
#[1] "04921103" "00042106" "19562106" "00011102" "03435467"
Run Code Online (Sandbox Code Playgroud)

如果不是数字,则转换为数字并使用 sprintf

sprintf("%08d", as.numeric(df1$row.names))
Run Code Online (Sandbox Code Playgroud)

如果我们的意思是row.names作为数据集的行名

row.names(df2) <- sprintf("%08d", as.numeric(row.names(df2)))
row.names(df2)
#[1] "04921103" "00042106" "19562106" "00011102" "03435467"
Run Code Online (Sandbox Code Playgroud)

注意:不需要外部包。

数据

df1 <- structure(list(row.names = c(4921103L, 42106L, 19562106L, 11102L, 
3435467L)), .Names = "row.names", class = "data.frame", row.names = c(NA, 
-5L))

df2 <- data.frame(v1= 1:5)
row.names(df2) <-  c(4921103L, 42106L, 19562106L, 11102L, 3435467L)
Run Code Online (Sandbox Code Playgroud)