【发布时间】:2020-09-29 20:50:30
【问题描述】:
我在 C 列中有一个带有这种表达式的数据框:
GT_rs9628326:N_rs9628326
GT_rs1111:N_rs1111
GT_rs8374:N_rs8374
使用 R,我想删除第一个“T”和“:”之间的所有内容,以及“N”之后的所有内容。我知道这可以用 gsub 完成。我会得到:
GT:N
GT:N
GT:N
【问题讨论】:
我在 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"
【讨论】: