AB753217|Influenza A virus (A/African Stonechat/Vietnam/8/2009(H9N2)) |H9N2 |4 (HA)|2009-11-12
我想从更快的头中删除一些字符,这样使用r
输出看起来像这样AB753217|A/African Stonechat/Vietnam/8/2009|H9N2 |HA|2009-11-12
我试过使用gsub()
,但似乎我的代码是错误的:
df_1$isolate_name <- gsub("Influenza A virus \(","", df_1$isolate_name)
df_1$isolate_name <- gsub("\)_segment.*gene", "", df_1$isolate_name)
您可以删除|
和(
之间的一切不是(
或|
:\|[^(|]+\(
,或(
或)
和|
之间的一切不是|
:[()][^|]*\|
,并重新插入|
。
s <- "AB753217|Influenza A virus (A/African Stonechat/Vietnam/8/2009(H9N2)) |H9N2 |4 (HA)|2009-11-12"
gsub("\|[^(|]+\(", "|", s) |> gsub("[()][^|]*\|", "|", x=_) #In two separate steps
gsub("(?<=\|)[^(|]+\(|[()][^|]*(?=\|)", "", s, perl=TRUE) #In one step using non consuming look ahead / behind and or |
#[1] "AB753217|A/African Stonechat/Vietnam/8/2009|H9N2 |HA|2009-11-12"