繁体   English   中英

用R提取字符串中间的字符串

[英]Extract character string in middle of string with R

我有看起来像这样的字符串:

a <- c("miRNA__hsa-mir-521-3p.iso.t5:", "miRNA__hsa-mir-947b.ref.t5:")

我只想提取中间部分,例如。 hsa-mir-521-3phsa-mir-947b

到目前为止,我已经尝试了以下方法:

a1 <- substr(a, 8,21) 
[1] "hsa-mir-521-3p" "hsa-mir-947b.r"  

这显然不起作用,因为我想要的子字符串长度不同

a2 <- sub('miRNA__', '', a)
[1] "hsa-mir-521-3p.iso.t5:" "hsa-mir-947b.ref.t5:"  

这可以删除上游字符串( “miRNA__” ),但我仍然需要删除下游字符串

有人可以建议我还可以尝试什么,或者是否有更简单的方法来实现这一目标? 我还在学习如何用 R 编码。非常感谢!

您还没有明确定义“中间部分”,但根据共享的数据,我们可以提取最后一个下划线 ( "_" ) 和点 ( "." ) 之间的所有内容。

sub('.*_(.*?)\\..*', '\\1', a)
#[1] "hsa-mir-521-3p" "hsa-mir-947b"  

您可以尝试下面的正则表达式

> gsub(".*_|\\..*","",a)
[1] "hsa-mir-521-3p" "hsa-mir-947b" 

它删除了最左边的 ( .*_ ) 和最右边的 ( \\\\..* ) 部分,因此保留了中间部分。

我们也可以使用来自base R trimws

trimws(a, whitespace = '.*_|\\..*')
#[1] "hsa-mir-521-3p" "hsa-mir-947b"  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM