R代码生成带前缀的唯一ID?

Cur*_*us 4 r

我有一个名为"pipel"的表,其中包含10,000多行.我想添加一个ID列来为每一行分配一个唯一的ID.唯一ID必须为30位数字,并以"AKM_CC_Test_"开头.我使用下面的代码作为起点但不知道如何格式化它以添加前缀并使其长达30位.

id <- rownames(pipel)
pipel <- cbind(id=id, pipel)
Run Code Online (Sandbox Code Playgroud)

例如,第一行ID需要看起来像这样AKM_CC_Test_000000000000000001

Ric*_*ven 7

你可以用sprintf().这将创建一个30个字符的字符串"AKM_CC_Test_",1:nrow(pipel)以带有前导零的序列开头并以其结尾.

x <- "AKM_CC_Test_"
sprintf("%s%0*d", x, 30 - nchar(x), 1:nrow(pipel))
Run Code Online (Sandbox Code Playgroud)
  • %s插入x字符串
  • %0*d增加了1:nrow(pipel)带有*前导零,后x.该*用于插入30 - nchar(x)到格式(我做到了编程,你可以只插入18那里,如果你想)

关于简单长度5(1:5)向量的示例将是

x <- "AKM_CC_Test_"
sprintf("%s%0*d", x, 30 - nchar(x), 1:5)
# [1] "AKM_CC_Test_000000000000000001" "AKM_CC_Test_000000000000000002"
# [3] "AKM_CC_Test_000000000000000003" "AKM_CC_Test_000000000000000004"
# [5] "AKM_CC_Test_000000000000000005"
Run Code Online (Sandbox Code Playgroud)