使用sprintf()添加尾随零

Jeb*_*h15 4 r

必须有一种简单的方法来做到这一点,我忽略了它.但是如果我有一系列id并且想要添加尾随零而未达到字符限制.我在另一篇文章中看到了这个解决方案,但似乎无法找到它链接以供参考.

df$id <- c(2331,29623,311,29623)
Run Code Online (Sandbox Code Playgroud)

这样做会得到领先的零:

df$id_new <- sprintf("%05s", df$id)
Run Code Online (Sandbox Code Playgroud)

但这样做不会落后于零:

df$id_new <- sprintf("%-05s", df$id)
Run Code Online (Sandbox Code Playgroud)

回答

感谢下面的理查德,我拉了stringr包并使用以下测试:

df$id_test <- str_pad(df$id, width=5, side="right", pad="0")

制作:

id_test  
23310  
29623  
31100  
29623
Run Code Online (Sandbox Code Playgroud)

Ric*_*ven 6

如评论中所述,sprintf()不会这样做.但是stringi包具有快速简便的填充功能.

id <- c(2331, 29623, 311, 29623)

library(stringi)
stri_pad_left(id, 5, 0)
# [1] "02331" "29623" "00311" "29623"
stri_pad_right(id, 5, 0)
# [1] "23310" "29623" "31100" "29623"
Run Code Online (Sandbox Code Playgroud)

这些函数直接分配给C代码,因此它们应该足够有效.