我有一个矢量:

c("b040_p001_e001_DMSO_01.raw", "b040_p001_e001_DMSO_02.raw", 
"b040_p001_e001_DMSO_03.raw", "b040_p001_e001_DMSO_04.raw", "b040_p001_e001_DMSO_05.raw", 
"b040_p001_e001_DOX_01.raw", "b040_p001_e001_DOX_02.raw", "b040_p001_e001_DOX_03.raw", 
"b040_p001_e001_DOX_04.raw", "b040_p001_e001_DOX_05.raw", "b040_p001_e001_IAA_01.raw", 
"b040_p001_e001_IAA_02.raw", "b040_p001_e001_IAA_03.raw", "b040_p001_e001_IAA_04.raw", 
"b040_p001_e001_IAA_05.raw", "b040_p001_e001_MK1775_01.raw", 
"b040_p001_e001_MK1775_02.raw", "b040_p001_e001_MK1775_03.raw", 
"b040_p001_e001_MK1775_04.raw", "b040_p001_e001_MK1775_05.raw", 
"b040_p001_e001_pool_01.raw", "b040_p001_e001_pool_02.raw", "b040_p001_e001_pool_03.raw", 
"b040_p001_e001_pool_04.raw")

对于每个元素,我想将第4个"_"替换为"_PE".例如,对于"b040_P001_e001_DMSO_01.raw",我希望得到"b040_P001_e001_DMSO_PE01.raw".所以我需要替换,但条件是正则表达式.做这件事最优雅的方式是什么?

推荐答案

library(stringr)
c("b040_p001_e001_DMSO_01.raw", "b040_p001_e001_DMSO_02.raw", 
  "b040_p001_e001_DMSO_03.raw", "b040_p001_e001_DMSO_04.raw", "b040_p001_e001_DMSO_05.raw", 
  "b040_p001_e001_DOX_01.raw", "b040_p001_e001_DOX_02.raw", "b040_p001_e001_DOX_03.raw", 
  "b040_p001_e001_DOX_04.raw", "b040_p001_e001_DOX_05.raw", "b040_p001_e001_IAA_01.raw", 
  "b040_p001_e001_IAA_02.raw", "b040_p001_e001_IAA_03.raw", "b040_p001_e001_IAA_04.raw", 
  "b040_p001_e001_IAA_05.raw", "b040_p001_e001_MK1775_01.raw", 
  "b040_p001_e001_MK1775_02.raw", "b040_p001_e001_MK1775_03.raw", 
  "b040_p001_e001_MK1775_04.raw", "b040_p001_e001_MK1775_05.raw", 
  "b040_p001_e001_pool_01.raw", "b040_p001_e001_pool_02.raw", "b040_p001_e001_pool_03.raw", 
  "b040_p001_e001_pool_04.raw") |>
  str_replace_all('(.*)(_)(\\d{2}\\.raw)', '\\1_PE\\3')

 [1] "b040_p001_e001_DMSO_PE01.raw"   "b040_p001_e001_DMSO_PE02.raw"   "b040_p001_e001_DMSO_PE03.raw"   "b040_p001_e001_DMSO_PE04.raw"  
 [5] "b040_p001_e001_DMSO_PE05.raw"   "b040_p001_e001_DOX_PE01.raw"    "b040_p001_e001_DOX_PE02.raw"    "b040_p001_e001_DOX_PE03.raw"   
 [9] "b040_p001_e001_DOX_PE04.raw"    "b040_p001_e001_DOX_PE05.raw"    "b040_p001_e001_IAA_PE01.raw"    "b040_p001_e001_IAA_PE02.raw"   
[13] "b040_p001_e001_IAA_PE03.raw"    "b040_p001_e001_IAA_PE04.raw"    "b040_p001_e001_IAA_PE05.raw"    "b040_p001_e001_MK1775_PE01.raw"
[17] "b040_p001_e001_MK1775_PE02.raw" "b040_p001_e001_MK1775_PE03.raw" "b040_p001_e001_MK1775_PE04.raw" "b040_p001_e001_MK1775_PE05.raw"
[21] "b040_p001_e001_pool_PE01.raw"   "b040_p001_e001_pool_PE02.raw"   "b040_p001_e001_pool_PE03.raw"   "b040_p001_e001_pool_PE04.raw"  

R相关问答推荐

按R中不同长度的组将日期时间列值四舍五入到小时

如何通过r中每20滚动和来创建组将数据视为1:10

R的法国工作日

使用lapply的重新定位功能

在(g)子中使用asserable字符

R箱形图gplot 2 4组但6个参数

R Tidymodels textercipes-使用spacyR进行标记化-如何从生成的标记列表中删除标点符号

如何在xyplot中 for each 面板打印R^2

在"gt"表中添加第二个"groupname_col",而不连接列值

par函数中的缩写,比如mgp,mar,mai是如何被破译的?

从BRM预测价值

如何在观测缺失的地方添加零

R—将各种CSV数字列转换为日期

如何根据R中其他变量的类别汇总值?

在另一个包中设置断点&S R函数

我如何go 掉盒子图底部的数字?

如果COLSUM为>;0,则COLNAME为向量

如何在R中使用hmm TMB提前一步预测观察到的状态?

如何删除R中除数字元素以外的所有元素

变长向量的矢量化和