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"
我在 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"