删除字符串中除所需单词(包括R中的某些模式)以外的其他单词
我有一个包含特定字符串的向量,我想删除每个字符串中除了包含特定模式的单词以外的其他部分(这里是删除字符串中除所需单词(包括R中的某些模式)以外的其他单词,r,R,我有一个包含特定字符串的向量,我想删除每个字符串中除了包含特定模式的单词以外的其他部分(这里是mir) s以R为底的一种方法是将每个字符串拆分为单词,然后只提取其中包含mir的字符串 unlist(lapply(strsplit(s, " "), function(x) grep("mir", x, value = TRUE))) #[1] "mir-96" "mir-133a" "mir-14-3p" "mir133" "mir_23_5p" 我们可以使用@Rich Scriv
mir
)
s以R为底的一种方法是将每个字符串拆分为单词,然后只提取其中包含mir
的字符串
unlist(lapply(strsplit(s, " "), function(x) grep("mir", x, value = TRUE)))
#[1] "mir-96" "mir-133a" "mir-14-3p" "mir133" "mir_23_5p"
我们可以使用@Rich Scriven在注释中建议的sapply
保存unlist
步骤
sapply(strsplit(s, " "), function(x) grep("mir", x, value = TRUE))
我们可以使用sub
匹配零个或多个字符(*
),后面是单词边界(\\b
),后面是字符串(mir
)和一个或多个非空白字符(\\S+
),将其作为一个组放置在(…)
后跟其他字符,并在替换中使用捕获组的反向引用(\\1
)
更新
如果有多个子字符串'mir.*',那么我们希望提取具有数字部分的字符串
sub(".*\\b(mir[^0-9]*[0-9]+\\S*).*", "\\1", s1)
#[1] "mir-96" "mir-133a" "mir-14-3p" "mir133" "mir_23_5p" "mir_23-5p"
数据
s1如果s
sub(".*\\b(mir[^0-9]*[0-9]+\\S*).*", "\\1", s1)
#[1] "mir-96" "mir-133a" "mir-14-3p" "mir133" "mir_23_5p" "mir_23-5p"
s1 <- c("a mir-96 line (kk27)", "mir-133a cell", "d mir-14-3p in", "m mir133 (sas)",
"mir_23_5p r 27", "a mir_23-5p 1 mir-net")