r - 如何使用前导零连续制作不连续的字符数字序列?

标签 r string

我有这个字符向量:

dput(t$line)
c("0304", "0305", "0306", "0308", "0311", "0313", "0314", "0316", 
"0318", "0321", "0322", "0323", "0324", "0326", "0327", "0330", 
"0333", "0337", "0338", "0339", "0342", "0341", "0344", "0346", 
"0347", "0348", "0349", "0350", "0352", "0353", "0357", "0359", 
"0360", "0362", "0363", "0364", "0365", "0367", "0371", "0370", 
"0373", "0375", "0378", "0380", "0381", "0385", "0386", "0387", 
"0391", "0395", "0394", "0397", "0398", "0399", "0400", "0402", 
"0404", "0405", "0406", "0408", "0412", "0416", "0419", "0423", 
"0424", "0425", "0426", "0428", "0429", "0432", "0433", "0436", 
"0435", "0439", "0437", "0440", "0441")
它包含的数字不是完全连续的。我想让它们连续,同时在需要的地方保留前导零。我想出了这个解决方案:
paste("0", seq(as.numeric(t$line[1]), as.numeric(t$line[1]) + length(t$line), 1), sep = "")
 [1] "0304" "0305" "0306" "0307" "0308" "0309" "0310" "0311" "0312" "0313" "0314" "0315" "0316" "0317" "0318" "0319" "0320"
[18] "0321" "0322" "0323" "0324" "0325" "0326" "0327" "0328" "0329" "0330" "0331" "0332" "0333" "0334" "0335" "0336" "0337"
[35] "0338" "0339" "0340" "0341" "0342" "0343" "0344" "0345" "0346" "0347" "0348" "0349" "0350" "0351" "0352" "0353" "0354"
[52] "0355" "0356" "0357" "0358" "0359" "0360" "0361" "0362" "0363" "0364" "0365" "0366" "0367" "0368" "0369" "0370" "0371"
[69] "0372" "0373" "0374" "0375" "0376" "0377" "0378" "0379" "0380" "0381"
只要只有一个 0 就可以正常工作要添加。然而,可能有多个前导零或根本没有。如何使用适当的前导零使序列连续?

最佳答案

stringr选项可以是:

str_pad(seq.int(min(as.numeric(x)), length.out = length(x)), 4, "left", "0")

 [1] "0304" "0305" "0306" "0307" "0308" "0309" "0310" "0311" "0312" "0313" "0314" "0315" "0316"
[14] "0317" "0318" "0319" "0320" "0321" "0322" "0323" "0324" "0325" "0326" "0327" "0328" "0329"
[27] "0330" "0331" "0332" "0333" "0334" "0335" "0336" "0337" "0338" "0339" "0340" "0341" "0342"
[40] "0343" "0344" "0345" "0346" "0347" "0348" "0349" "0350" "0351" "0352" "0353" "0354" "0355"
[53] "0356" "0357" "0358" "0359" "0360" "0361" "0362" "0363" "0364" "0365" "0366" "0367" "0368"
[66] "0369" "0370" "0371" "0372" "0373" "0374" "0375" "0376" "0377" "0378" "0379" "0380"

关于r - 如何使用前导零连续制作不连续的字符数字序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64078958/

相关文章:

使用具有条件的另一个数据帧替换一个数据帧中多列的值

使用效果编码重新调整因子和 glm

c++ - C++11 是否提供了一种更好的方式来动态连接字符串?

c++ - 在 C++ 中声明常量时使用字符串值作为宽字符串

javascript - 在javascript中输入一个正斜杠

Rcpp 函数检查是否缺失值

r - 在每个大写字母前添加下划线,后跟小写字母

r - 查找不同变量中出现的次数

javascript - 如何在 JavaScript 中将字符串转换为整数

java - 在 Java 中使用递归反转字符串