R提取第n个和第i个分隔符实例之间的字符串

ari*_*lle 4 regex r

我有一个字符串向量,类似于这个,但有更多的元素:

s <- c("CGA-DV-558_T_90.67.0_DV_1541_07", "TC-V-576_T_90.0_DV_151_0", "TCA-DV-X_T_6.0_D_A2_07", "T-V-Z_T_2_D_A_0", "CGA-DV-AW0_T.1_24.4.0_V_A6_7", "ACGA-DV-A4W0_T_274.46.0_DV_A266_07")
Run Code Online (Sandbox Code Playgroud)

我想使用一个函数来提取分隔符“_”的第 n 个和第 i 个实例之间的字符串。例如,第 2 个 (n = 2) 和第 3 个 (i = 3) 实例之间的字符串,得到这个:

[1] "90.67.0"  "90.0"     "6.0"      "2"        "24.4.0"   "274.46.0"
Run Code Online (Sandbox Code Playgroud)

或者如果 n = 4 且 i = 5"

[1] "1541" "151"  "A2"   "A"    "A"    "A266"
Run Code Online (Sandbox Code Playgroud)

有什么建议?感谢您的帮助!

G5W*_*G5W 5

你可以这样做 gsub

n = 2
i = 3

pattern1 = paste0("(.*?_){", n,  "}")
temp = gsub(pattern1, "", s)
pattern2 = paste0("((.*?_){", i-n,  "}).*")
temp = gsub(pattern2, "\\1", temp)
temp = gsub("_$", "", temp)
[1] "1541" "151"  "A2"   "A"    "A6"   "A266"
Run Code Online (Sandbox Code Playgroud)