I have a vector:
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")
for each element I would like to replace the 4th "_" with "_PE". E.g. for "b040_p001_e001_DMSO_01.raw" I would like to get "b040_p001_e001_DMSO_PE01.raw". So I need replacement, but conditional on regular expression. What is the most elegant way to do this?
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"