gpt4 book ai didi

r - 如何用R中的条件替换前两个匹配模式

转载 作者:行者123 更新时间:2023-12-01 11:25:42 24 4
gpt4 key购买 nike

我有一个名为 myvec 的向量。我想用“-”替换每个元素中的前两个点(如果出现在 _ 之前)。我如何在 R 中执行此操作并获得结果?

myvec <- c("SKDP.209.3_C4UAMACXX.7.04.ReCal.sort.bam", "SKDP.97.1_C4UAMACXX.7.12.ReCal.sort.bam", 
"SKDP972_C4UAMACXX.7.13.ReCal.sort.bam")

结果

SKDP-209-3_C4UAMACXX.7.04.ReCal.sort.bam, SKDP-97-1_C4UAMACXX.7.12.ReCal.sort.bam, 
SKDP972_C4UAMACXX.7.13.ReCal.sort.bam

最佳答案

我们可以尝试使用 gsub。使用捕获组,即放置在 (...) 中的字符,检查是否还有一个不是 的字符。 (([^.]+)),后面跟着一个点(\\. as . 是一个可以匹配任何字符的元字符,我们需要转义它)后面跟着另一组不是点的捕获组后跟点,然后是第三个捕获组,其中包括一个或多个不是 _ 后跟 _ 的字符( ([^_]+_) 和其余字符,直到字符串结尾 (.*) 并替换为捕获组的反向引用,即 \\1 表示第一个,然后是 - 然后是第二个反向引用...

gsub("^([^.]+)\\.([^.]+)\\.([^_]+_.*)", "\\1-\\2-\\3", myvec)
#[1] "SKDP-209-3_C4UAMACXX.7.04.ReCal.sort.bam"
#[2] "SKDP-97-1_C4UAMACXX.7.12.ReCal.sort.bam"
#[3] "SKDP972_C4UAMACXX.7.13.ReCal.sort.bam"

关于r - 如何用R中的条件替换前两个匹配模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37373123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com