R:使用strsplit()在两个字符之间拆分字符串

bio*_*ard 5 split r strsplit

假设我有以下字符串:

s <- "ID=MIMAT0027618;Alias=MIMAT0027618;Name=hsa-miR-6859-5p;Derives_from=MI0022705"
Run Code Online (Sandbox Code Playgroud)

我想恢复之间的字符串";""="获得以下输出:

[1] "MIMAT0027618"  "MIMAT0027618"  "hsa-miR-6859-5p"  "MI0022705"
Run Code Online (Sandbox Code Playgroud)

我可以使用strsplit()多个拆分元素吗?

G. *_*eck 16

1)strsplit with matrix试试这个:

> matrix(strsplit(s, "[;=]")[[1]], 2)[2,]
[1] "MIMAT0027618"    "MIMAT0027618"    "hsa-miR-6859-5p" "MI0022705"   
Run Code Online (Sandbox Code Playgroud)

2)用strsplit GSUB或此使用的strsplit具有gsub:

> strsplit(gsub("[^=;]+=", "", s), ";")[[1]]
[1] "MIMAT0027618"    "MIMAT0027618"    "hsa-miR-6859-5p" "MI0022705"     
Run Code Online (Sandbox Code Playgroud)

3)strsplit with sub或this use strsplitwith sub:

> sub(".*=", "", strsplit(s, ";")[[1]])
[1] "MIMAT0027618"    "MIMAT0027618"    "hsa-miR-6859-5p" "MI0022705"   
Run Code Online (Sandbox Code Playgroud)

4)strapplyc或在等号后提取连续的非分号:

> library(gsubfn)
> strapplyc(s, "=([^;]+)", simplify = unlist)
[1] "MIMAT0027618"    "MIMAT0027618"    "hsa-miR-6859-5p" "MI0022705"  
Run Code Online (Sandbox Code Playgroud)

增加了额外的strplit解决方案.