Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R在催眠后的字符串中填充0_R_Regex_String - Fatal编程技术网

R在催眠后的字符串中填充0

R在催眠后的字符串中填充0,r,regex,string,R,Regex,String,我有以下数据 GT_BUC-01_BUCST-19 ADT_BURC-1_BUCST-09 BT_BUDDC-1_BUDSCST-29 CAST_BUC-31_BUCST-9 CAST_BUC-1_BUCST-9 如何使用R使两个连字符后面的数字填充前导零,使其具有两个数字?生成的格式应如下所示: GT_BUC-01_BUCST-19 ADT_BURC-01_BUCST-09 BT_BUDDC-01_BUDSCST-29 CAST_BUC-31_BUCST-09 CAST_BUC-01_BUC

我有以下数据

GT_BUC-01_BUCST-19
ADT_BURC-1_BUCST-09
BT_BUDDC-1_BUDSCST-29
CAST_BUC-31_BUCST-9
CAST_BUC-1_BUCST-9
如何使用R使两个连字符后面的数字填充前导零,使其具有两个数字?生成的格式应如下所示:

GT_BUC-01_BUCST-19
ADT_BURC-01_BUCST-09
BT_BUDDC-01_BUDSCST-29
CAST_BUC-31_BUCST-09
CAST_BUC-01_BUCST-09
您可以按如下方式尝试使用gsub:

x <- gsub("-(\\d)(?!\\d)", "-0\\1", x, perl=TRUE)
x

[1] "GT_BUC-01_BUCST-19"     "ADT_BURC-01_BUCST-09"   "BT_BUDDC-01_BUDSCST-29"
[4] "CAST_BUC-31_BUCST-09"   "CAST_BUC-01_BUCST-09"  
数据:

此处使用的正则表达式模式仅与后跟单个数字的破折号匹配。在这种情况下,我们将通过在这个数字前加一个零来进行替换。

您可以尝试使用gsub,如下所示:

x <- gsub("-(\\d)(?!\\d)", "-0\\1", x, perl=TRUE)
x

[1] "GT_BUC-01_BUCST-19"     "ADT_BURC-01_BUCST-09"   "BT_BUDDC-01_BUDSCST-29"
[4] "CAST_BUC-31_BUCST-09"   "CAST_BUC-01_BUCST-09"  
数据:


此处使用的正则表达式模式仅与后跟单个数字的破折号匹配。在这种情况下,我们通过在这个数字前加一个零来替换。一个选项是使用stringr::str_replace_all


一种选择是使用stringr::str_替换所有


我已经尝试过解决方案,但我无法找出如何为我的问题更改它以及它到底在做什么?我已经尝试过解决方案,但我无法找出如何为我的问题更改它以及它到底在做什么?如果我有BUC6-01刺痛,我想要这个结果BUC06-01,我们将如何实施它?一般来说:gsub?很高兴帮助您!如果我有BUC6-01刺痛,并且我想要这个结果BUC06-01,我们将如何实现它?一般来说:gsub?很高兴帮助您!
x <- c('GT_BUC-01_BUCST-19', 'ADT_BURC-1_BUCST-09', 
       'BT_BUDDC-1_BUDSCST-29', 'CAST_BUC-31_BUCST-9', 'CAST_BUC-1_BUCST-9')

stringr::str_replace_all(x, '\\d+', function(m) sprintf('%02s', m))

#[1] "GT_BUC-01_BUCST-19"     "ADT_BURC-01_BUCST-09"  
#[3] "BT_BUDDC-01_BUDSCST-29" "CAST_BUC-31_BUCST-09"  
#[5] "CAST_BUC-01_BUCST-09"