移除"_"之前的所有字符。

3
如何在"_"之前删除任何字符和数字;例如:
> char <- c("SRR04_d3_GCTCGGTAAGCACCTCGCCACATA","SRR04_d1_ACTCGGTAAGCACCTCGCCACATA",
+           "JH-HL_GCTCGGTAAGCATGTCGCCACATA","HZ04_d5_GCTCGGTAAGCACCTCGCCACATA")
> c("GCTCGGTAAGCACCTCGCCACATA","ACTCGGTAAGCACCTCGCCACATA",
+           "GCTCGGTAAGCATGTCGCCACATA","GCTCGGTAAGCACCTCGCCACATA")
[1] "GCTCGGTAAGCACCTCGCCACATA" "ACTCGGTAAGCACCTCGCCACATA" "GCTCGGTAAGCATGTCGCCACATA"
[4] "GCTCGGTAAGCACCTCGCCACATA"

我能使用来自tidyversestr_replace函数进行这项操作吗?

6个回答

2
您可以使用 sub 来实现此功能 -
sub('.*_', '', char)

#[1] "GCTCGGTAAGCACCTCGCCACATA" "ACTCGGTAAGCACCTCGCCACATA"
#[3] "GCTCGGTAAGCATGTCGCCACATA" "GCTCGGTAAGCACCTCGCCACATA"

或者,如果您更喜欢使用stringr函数。

stringr::str_remove(char, '.*_')
stringr::str_replace(char, '.*_', '')

1
这将删除下划线,但我不确定原帖作者是否需要。他之前说过。如果不需要,则sub或str_replace中的''可以是'_'。在示例数据中,有一个形如“sometext_moretext_lasttext”的字符串,原帖作者想要什么结果?是moretext_lasttext还是只有lasttext-请确保您得到了您想要/期望的结果。 - CALUM Polwart

2

Base R:

或者使用 strsplitsapply

> sapply(strsplit(char, '_'), tail, n=1)
[1] "GCTCGGTAAGCACCTCGCCACATA" "ACTCGGTAAGCACCTCGCCACATA" "GCTCGGTAAGCATGTCGCCACATA" "GCTCGGTAAGCACCTCGCCACATA"
> 

2

这里有一种替代方式:

library(stringr)
str_replace_all(char, ".*_(?=[^:]+$)", "")

输出:

[1] "GCTCGGTAAGCACCTCGCCACATA" "ACTCGGTAAGCACCTCGCCACATA" "GCTCGGTAAGCATGTCGCCACATA"
[4] "GCTCGGTAAGCACCTCGCCACATA"

2
我们可以使用来自基础R的trimws函数。
trimws(char, whitespace = ".*_")
[1] "GCTCGGTAAGCACCTCGCCACATA" "ACTCGGTAAGCACCTCGCCACATA" 
[3] "GCTCGGTAAGCATGTCGCCACATA" "GCTCGGTAAGCACCTCGCCACATA"

1

可以使用stringr软件包提取字符串末尾的所有字母:

library(stringr)
str_extract(char, "[[:alpha:]]*$")
# [1] "GCTCGGTAAGCACCTCGCCACATA" "ACTCGGTAAGCACCTCGCCACATA" "GCTCGGTAAGCATGTCGCCACATA"
# [4] "GCTCGGTAAGCACCTCGCCACATA"

1
我会使用gsub和模式[^\W_]+_来表达您的问题。这将针对一个或多个字母数字字符,在下划线之前,任意次数。
char <- c("SRR04_d3_GCTCGGTAAGCACCTCGCCACATA","SRR04_d1_ACTCGGTAAGCACCTCGCCACATA",
      "JH-HL_GCTCGGTAAGCATGTCGCCACATA","HZ04_d5_GCTCGGTAAGCACCTCGCCACATA")
output <- gsub("[^\\W_]+_", "", char)
output

[1] "GCTCGGTAAGCACCTCGCCACATA" "ACTCGGTAAGCACCTCGCCACATA"
[3] "GCTCGGTAAGCATGTCGCCACATA" "GCTCGGTAAGCACCTCGCCACATA"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接