[英]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-3p
和hsa-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.