如何在R语言的paste0()中为向量字符串按序补零?
如何用R生成带前导零的序列字符串?
这个需求我太熟悉了!在R里要生成带前导零的文件名序列,最顺手的就是用base R自带的sprintf()函数,比硬凑paste0()要简洁高效得多。
解决1-10的两位补零需求
直接用sprintf()指定格式化规则就行,代码如下:
sprintf("cat.%02d.jpg", 1:10)
运行后就能得到你想要的结果:
[1] "cat.01.jpg" "cat.02.jpg" "cat.03.jpg" "cat.04.jpg" "cat.05.jpg" "cat.06.jpg" "cat.07.jpg" "cat.08.jpg"
[9] "cat.09.jpg" "cat.10.jpg"
这里的%02d是核心:%d表示将后续的数字按整数格式处理,02指定了数字的总宽度为2,不足两位时自动在前面补0。
实现1-1000的四位补零需求
只需要把格式化规则里的宽度改成4就行,代码非常直观:
sprintf("cat.%04d.jpg", 1:1000)
执行后生成的就是cat.0001.jpg、cat.0002.jpg……一直到cat.1000.jpg的序列,完全匹配你的要求。
如果非要用paste0()实现?
也可以借助stringr包的str_pad()函数先给数字补零,再拼接字符串:
# 若未安装stringr包先执行:install.packages("stringr") library(stringr) paste0("cat.", str_pad(1:1000, width = 4, side = "left", pad = "0"), ".jpg")
不过相比之下,sprintf()是base R自带工具,无需额外安装包,代码也更简洁,更推荐使用。
内容的提问来源于stack exchange,提问作者littleworth
相关产品推荐
相关产品推荐

