我想將所有前導數字放在字串中兩個下劃線之間的最后一個字符之后:
我有這個向量:
have <- c("6ABCD23102019", "3ABCD23102019", "9ABCD23102019", "10ABCD23102019")
[1] "6ABCD23102019" "3ABCD23102019" "9ABCD23102019" "10ABCD23102019"
我想得到這個:
desired <- c("ABCD_6_23102019", "ABCD_3_23102019", "ABCD_9_23102019", "ABCD_10_23102019")
[1] "ABCD_6_23102019" "ABCD_3_23102019" "ABCD_9_23102019" "ABCD_10_23102019"
這個6ABCD23102019應該變成這個ABCD_6_23102019
背景:在檔案重命名和復制操作中,我需要重命名檔案。
我努力了:
library(stringr)
x <- str_sub(have, 1,1)
helper <- str_replace(have, '\\dA', 'A')
result <- str_replace(helper, 'D', 'D_x_')
result
[1] "ABCD_x_23102019" "ABCD_x_23102019" "ABCD_x_23102019" "ABCD_x_23102019"
uj5u.com熱心網友回復:
使用捕獲組捕獲開頭 ( ^) 后跟大寫字母的一個或多個數字,然后以相反的順序重新排列反向參考 ( \\1, \\2)
library(stringr)
str_replace(have, "^(\\d )([A-Z] )", "\\2_\\1_")
-輸出
[1] "ABCD_6_23102019" "ABCD_3_23102019" "ABCD_9_23102019" "ABCD_10_23102019"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/483126.html
