R. 删除分隔符之间的所有内容

R. Remove everything between to delimiter characters

我在 C 列中有一个包含这种表达式的数据框:

GT_rs9628326:N_rs9628326
GT_rs1111:N_rs1111
GT_rs8374:N_rs8374

使用 R,我想删除第一个“T”和“:”之间的所有内容,以及“N”之后的所有内容。我知道这可以用 gsub 来完成。我会得到:

GT:N
GT:N
GT:N

也许你可以试试

gsub("_\w+","",s)

给予

[1] "GT:N" "GT:N" "GT:N"

数据

s <- c("GT_rs9628326:N_rs9628326","GT_rs1111:N_rs1111","GT_rs8374:N_rs8374")

另一种选择是按 : 拆分字符串,然后替换不必要的文本,以便用相同的拆分符号再次折叠在一起(我使用了@ThomasIsCoding 数据,谢谢):

#Data
v1 <- c("GT_rs9628326:N_rs9628326","GT_rs1111:N_rs1111","GT_rs8374:N_rs8374")
#Code
unlist(lapply(lapply(strsplit(v1,split = ':'),
                     function(x) sub("_[^_]+$", "", x)),
       function(x) paste0(x,collapse = ':')))

输出:

[1] "GT:N" "GT:N" "GT:N"

使用 stringr

中的 str_remove
library(stringr)
str_remove_all(s, "_\w+")
#[1] "GT:N" "GT:N" "GT:N"

数据

s <- c("GT_rs9628326:N_rs9628326","GT_rs1111:N_rs1111","GT_rs8374:N_rs8374")

删除 "T""N" 之后的一个词。使用@ThomasIsCoding 的数据。

gsub('(?<=T|N)\w+', '', s, perl = TRUE)
#[1] "GT:N" "GT:N" "GT:N"