提取|之间的最后一个字 |

Ken*_*jin 7 regex r stringr

我有以下数据集

> head(names$SAMPLE_ID)
[1] "Bacteria|Proteobacteria|Gammaproteobacteria|Pseudomonadales|Moraxellaceae|Acinetobacter|"
[2] "Bacteria|Firmicutes|Bacilli|Bacillales|Bacillaceae|Bacillus|"                            
[3] "Bacteria|Proteobacteria|Gammaproteobacteria|Pasteurellales|Pasteurellaceae|Haemophilus|" 
[4] "Bacteria|Firmicutes|Bacilli|Lactobacillales|Streptococcaceae|Streptococcus|"             
[5] "Bacteria|Firmicutes|Bacilli|Lactobacillales|Streptococcaceae|Streptococcus|"             
[6] "Bacteria|Firmicutes|Bacilli|Lactobacillales|Streptococcaceae|Streptococcus|" 
Run Code Online (Sandbox Code Playgroud)

我想提取||作为新变量之间的最后一个词即

Acinetobacter
Bacillus
Haemophilus
Run Code Online (Sandbox Code Playgroud)

我试过用

library(stringr)
names$sample2 <-   str_match(names$SAMPLE_ID, "|.*?|")
Run Code Online (Sandbox Code Playgroud)

akr*_*run 5

我们可以用

library(stringi)
stri_extract_last_regex(v1, '\\w+')
#[1] "Acinetobacter"
Run Code Online (Sandbox Code Playgroud)

数据

v1 <- "Bacteria|Proteobacteria|Gammaproteobacteria|Pseudomonadales|Moraxellaceae|Acinetobacter|"
Run Code Online (Sandbox Code Playgroud)


Zel*_*ny7 5

仅使用基数R:

myvar <- gsub("^..*\\|(\\w+)\\|$", "\\1", names$SAMPLE_ID)
Run Code Online (Sandbox Code Playgroud)