繁体   English   中英

如何生成以 R 中的序列结尾的字符串列表

[英]How to generate a list of strings that ends with a sequence in R

所以我试图生成一个带有前缀的字符串列表,并以这样的数字序列结尾:

c("b01001_001", "b01001_002",...,"b01001_030")在 R

这是我的代码:

generate_var = function(prefix, length){
  varlist = c()
  i = 1
  while (i <= y){
    if (i < 10){
      var = paste(x, "_00", as.character(i), sep = " ")
    }
    if (i >= 10){
      var = paste(x, "_0", as.character(i), sep = " ")
    }
    varlist[[i]] = var
    i = i + 1
  }
}

varlist = generate_var("b01001", 30)

function 结果生成了一个空列表。 有人可以帮我看看我的代码并告诉我出了什么问题吗? 谢谢!

R 具有矢量化功能,使用pastesprintf

generate_var = function(prefix, length) {
   paste(prefix, sprintf('%03d', seq_len(length)), sep = '_')
   #Much better suggestion by @thelatemail
   #sprintf('%s_%03d', prefix, seq_len(length))
}

generate_var("b01001", 6)
#[1] "b01001_001" "b01001_002" "b01001_003" "b01001_004" "b01001_005" "b01001_006"

就您的代码而言,几乎没有错误。

1)您在 function 中使用xy ,但找不到它们,也许您的意思是prefixlength

2) 如果您使用paste0而不是paste ,则不需要sep = " "参数。

3) 使用单方括号 ( [] ) 而不是双括号 ( [[]] ) 来访问varlist ,因为使用双括号会将varlist转换为列表。

4) 最后return(varlist)

generate_var = function(prefix, length){
  varlist = c()
  i = 1
  while (i <= length){
    if (i < 10){
      var = paste0(prefix, "_00", as.character(i))
    }
     if (i >= 10){
       var = paste0(prefix, "_0", as.character(i))
    }
      varlist[i] = var
      i = i + 1
   }
   return(varlist)
}

generate_var("b01001", 5)
#[1] "b01001_001" "b01001_002" "b01001_003" "b01001_004" "b01001_005"

附加选项

library(stringr)
str_c("b01001_", str_pad(1:30, width = 3, pad = 0))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM