[英]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 具有矢量化功能,使用paste
和sprintf
。
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 中使用x
, y
,但找不到它们,也许您的意思是prefix
和length
。
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.